永远进行cURL调用/ ping操作

时间:2015-06-03 14:31:45

标签: php rest curl cron timeout

我的主机超时有些问题。我有这个脚本需要一段时间才能结束,并且随着数据库变大,可能需要更长的时间。

所以我想到一个解决方案,每小时一个cron将启动这个脚本,并且每当脚本花费的时间超过N秒时,它将停在原处(在当前循环交互之后)并调用自身(发送帖子到那个应该重启过程的URL。)

但是我必须确保它自己调用直到完成所有工作(我在数据库上使用了一些标志)。

所以我做了一些测试,我的脚本应该在文件中当前的数字加1并将其保存到该文件中。然后它等待2秒并自行调用。

我意识到在20次或40次交互之后这个数字会停止增加,并且数字永远不会高于此值。

我怎么能永远调用PHP文件,直到我说它足够了?

这是我的剧本:

function callItself(){
    $curl = curl_init();
    $post = array('run'=>true);
    curl_setopt($curl,CURLOPT_URL,SITE_URL.'/'.CRON_SCRIPT);
    curl_setopt($curl, CURLOPT_POST, TRUE);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    curl_setopt($curl, CURLOPT_USERAGENT, 'api');
    curl_setopt($curl, CURLOPT_TIMEOUT, 3);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
    curl_setopt($curl, CURLOPT_FORBID_REUSE, true);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3);
    //curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1);
    curl_setopt($curl, CURLOPT_DNS_CACHE_TIMEOUT, 10);

    curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);

    curl_exec($curl);

    curl_close($curl);
}

@edit

这是我的callItself功能。脚本的其余部分只是编写文件和sleep的命令。

0 个答案:

没有答案