Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+mySQL:读取65K行挂起mySQL_Php_Mysql_Ip_Large Data - Fatal编程技术网

PHP+mySQL:读取65K行挂起mySQL

PHP+mySQL:读取65K行挂起mySQL,php,mysql,ip,large-data,Php,Mysql,Ip,Large Data,我正在开发一个用于处理IP地址的php应用程序。因此,我正在处理包含多达40亿行的mysql表 我有一个脚本,当前需要从这个表中获取65536个地址,当我试图提取这些65K行时,mysql查询无法通过PHP甚至phpMyAdmin给出响应 包含IP地址的表有3个索引,1个是唯一的,2个是主要的,这有助于它运行得更快,但我无法通过让mysql给PHP一个关联数组来继续我的数据处理 关于如何避免这个问题,有什么建议吗 提前谢谢 $request = new Request(DB_N

我正在开发一个用于处理IP地址的php应用程序。因此,我正在处理包含多达40亿行的mysql表

我有一个脚本,当前需要从这个表中获取65536个地址,当我试图提取这些65K行时,mysql查询无法通过PHP甚至phpMyAdmin给出响应

包含IP地址的表有3个索引,1个是唯一的,2个是主要的,这有助于它运行得更快,但我无法通过让mysql给PHP一个关联数组来继续我的数据处理

关于如何避免这个问题,有什么建议吗

提前谢谢

$request =          new Request(DB_NAME);
    $request->select =  '*';        
    $request->from =    Etherwan_Adressage_Ip::TABLE_NAME;
    $request->where =   Etherwan_Adressage_Ip_Ressource::PRIMARY_KEY." = '".$options->Ressource_ID."'";
    $request->order =   " inet_aton(IP) ";

    $Compteur = 0;
    $Liste = array();
    $result = $request->exec('select');

    for ($i=0 ; $i<$result['length'] ; $i+=$CIDR->Adresses_Totales){

        $Possible = TRUE;
        $Selected = FALSE;

        for ($j=$i ; $j<$i+$CIDR->Adresses_Totales ; $j++){
            if ($result[$j]['Date_Affectation'] != '0000-00-00 00:00:00'){
                if (isset($options->Include)){
                    if ($options->Include->Type != $result[$j]['Type_Liaison'] || $options->Include->Liaison_ID != $result[$j]['Liaison_ID'] || str_replace('/', '', $options->CIDR) != $result[$j]['Bits']){
                        $Possible = FALSE;
                    } else {
                        $Selected = TRUE;
                    }
                } else {
                    $Possible = FALSE;
                }
                break;
            }
        }

        if ($Possible){

            $Liste[$Compteur]['text'] =     $result[$i]['IP'] . " / " .  $result[$i+$CIDR->Adresses_Totales-1]['IP'];
            $Liste[$Compteur]['value'] =    $result[$i]['Ressource_ID'];
            $Liste[$Compteur]['selected'] = $Selected;

            $Liste_IP = array();
            for ($j=$i ; $j<$i+$CIDR->Adresses_Totales ; $j++){
                if ($result[$j]['Nom'] != ''){
                    $result[$j]['Dispo'] = 0;
                } else {
                    $result[$j]['Dispo'] = 1;
                }
                $Liste_IP[] = $result[$j];
            }
            $Liste[$Compteur]['Liste_IP'] = $Liste_IP;

            $Compteur++;

        }

    }

    $Liste['maxLength'] = $Liste['length'] = $Compteur;

    return $Liste;

您是否尝试对查询使用“限制”和“偏移量”对大型结果集进行细分,并每次使用一个小的子集重新进行处理?您期望得到什么样的响应?您的PHP脚本实际应该显示65536个IP地址吗?您可以显示您的查询吗?我必须能够访问完整的65K行,因为在获得它们之后,我必须根据用户选择的CIDR编号创建IP范围。因此,我必须检查每一行,看看IP是否可用,并根据它来构造我的范围。但是你能告诉我们你正在执行的查询吗?