PHP curl get标头不适用于超过300个条目的cron作业

时间:2018-12-24 06:53:37

标签: php mysql csv curl cron

我有一个cron作业,可以扫描URL以查看它们是否在线。我的问题是它从未完成844个网站。它将在260到300多一点之间变化。

cron作业每30分钟调用一次此PHP文件,但它从未完成我的完整列表。有什么我做不正确的事情来阻止循环完成任务吗?

// php file
//first part gets the csv file and reads the 844 sites

if (($handle = fopen("/public/csvs/" . $csv, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
        $num = count($data);

        for ($c = 0; $c < $num; $c++) {

           $site = $data[$c];

                   $curl = curl_init();
                    curl_setopt_array( $curl, array(
                        CURLOPT_HEADER => true,
                        CURLOPT_NOBODY => true,
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_URL => 'https://'.$site ) );
                    $headers = explode( "\n", curl_exec( $curl ) );
                    curl_close( $curl );

                     // gets the status of the URL then 
                     fills it in the database.

                    $statushttp = $headers[0];



                    $mysqltime = date("Y-m-d H:i:s", $phptime);


                        //$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                        //$sql = $conn->prepare($sql);
                        $sql = "INSERT INTO csv (http_status,status,url,csv,related)
                     VALUES ('$statushttp','$status','$site','$csv',1)";

                        // use exec() because no results are returned

                        $conn->exec($sql);
                        //echo $site ." ".$statushttp."<br>";
                        //echo $statusCode."<br>";



        }

    }

}

1 个答案:

答案 0 :(得分:0)

在其他服务器上进行了尝试,但没有任何问题。