Exemplo n.º 1
0
$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);