我的主机超时有些问题。我有这个脚本需要一段时间才能结束,并且随着数据库变大,可能需要更长的时间。
所以我想到一个解决方案,每小时一个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
的命令。