没有cron的PHP调度程序

时间:2012-02-11 07:30:52

标签: php scheduler

我想每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 

我运行此代码一次。即使我关闭整个浏览器窗口,它也能完美运行。

如果我打开系统的互联网连接,问题就是停止工作。

如何解决这个问题。请帮帮我。

2 个答案:

答案 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(开源可以免费使用),它会提供一个界面来添加,修改和删除要运行的脚本。