我想每5分钟运行一次我的PHP脚本。这是我的PHP代码。
function call_remote_file($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
}
set_time_limit(0);
$root='http://mywebsiteurl'; //remote location of the invoking and the working script
$url=$root."invoker.php";
$workurl=$root."script.php";
call_remote_file($workurl);//call working script
sleep(60*5);// wait for 300 seconds.
call_remote_file($url); //call again this script
我运行此代码一次。即使我关闭整个浏览器窗口,它也能完美运行。
如果我打开系统的互联网连接,问题就是停止工作。
如何解决这个问题。请帮帮我。
答案 0 :(得分:1)
虽然我不会真的建议这样做是为了关键(你会遇到稳定性问题),但这可能会有效:
function call_remote_file($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
}
set_time_limit(0);
$root='http://mywebsiteurl'; //remote location of the invoking and the working script
$url=$root."invoker.php";
$workurl=$root."script.php";
while(true)
{
call_remote_file($workurl);//call working script
sleep(60*5);// wait for 300 seconds.
}
另一种方法是使用exec()
从命令行调用它:
function call_remote_file($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
}
set_time_limit(0);
$root='http://mywebsiteurl'; //remote location of the invoking and the working script
$url=$root."invoker.php";
$workurl=$root."script.php";
call_remote_file($workurl);//call working script
sleep(60*5);// wait for 300 seconds.
exec('php ' . $_SERVER['SCRIPT_FILENAME']);
尽管如此,你应该真的使用cron。
答案 1 :(得分:1)
上面的代码没问题,但如果你想添加多个脚本以不同的时间间隔运行,那么编码会变得复杂得多。
如果您尝试phpjobscheduler(开源可以免费使用),它会提供一个界面来添加,修改和删除要运行的脚本。