$content = []; $partition_per_page = $per_page; $matched_count = 0; $read_count = 0; for ($i = 0; $i < $G_PARTITIONS_COUNT; $i++) { # Storing partition $partition = $G_PARTITIONS[$i]; # Connecting if we need to connect if (!isset($partition['dblink'])) { $partition['dblink'] = mysqli_shared_connect($partition['host'], $partition['username'], $partition['password'], $G_SHARED_DBLINKS); } # Adding our tracking $G_READ_PARTITION_IDS[] = $partition['id']; # Reading our files if (ADD_PARTITION_COLUMN) { $query->add_literal_select_column('partition', $partition['evaluation']); } $query->set_table($partition['table_name'], false, false, $partition['database']); $select_query = $query->get_select_query($partition_per_page, $page_start, COLUMNS_SORTED); $select_result = mysqli_multi_result_query($partition['dblink'], $select_query); $partition_count = mysqli_num_rows($select_result); # We have no matches in this partition, and we have more to check if ($partition_count == 0 && $i != $G_PARTITIONS_COUNT - 1) { # Lowering our start page $count_query = $query->get_select_count_query(); $count_data = mysqli_single_result_query($partition['dblink'], $count_query); $page_start = max(0, $page_start - $count_data['count']); } else { # Getting our results and primary keys if needed $content = array_merge($content, mysqli_fetch_all($select_result, MYSQLI_ASSOC)); $page_start = max(0, $page_start - $partition_count);