如何在没有cron的PHP中执行长时间运行的任务

时间:2011-06-17 11:54:51

标签: php process cron backup

让我们想象一下我的情况(当然是假的)......

我的网站有1000个活跃用户。我需要做一些缓慢的事情(数据库清理,备份)等。例如,它可能需要5分钟。

当用户打开我的网站并执行一些参数时(例如,他是一周内的第一个访客),我希望实现这一点...用户以某种方式向服务器发送信号 - 必须立即运行缓慢的进程,但他不等待它的执行(那几分钟)......他只是看到服务器正在进行更新或其他任何事情的通知。在那段时间打开我的网站的任何其他用户也会看到该通知。

执行流程时 - 网站会返回正常行为。这一切都是自动发生的。

没有cron可以吗?

3 个答案:

答案 0 :(得分:2)

检查Execution Operators。它们可能正是您所寻找的。 像这样的东西

$execute = `/path/to/php/script.php`;

// If you needed the output
echo $execute; 

运行此脚本后,设置一个标志(可以在数据库中,也可以在文件中进行简单的写入)。当脚本结束时,删除此标志。

在所有其他页面中 - 检查此标志。如果为ON则显示消息。

答案 1 :(得分:0)

在您的页面上,您可以拥有一个数据库值,即script_runninng然后检查值是否为0,发送命令,if = 1什么都不做。然后确保在命令的开头和结尾处将值设置为1。

答案 2 :(得分:0)

您可以使用CURL执行此任务。在数据库或文本文件中节省时间上次运行脚本和一周中的一天运行此脚本(当然,在执行脚本之前更新日期):

$ ch = curl_init();

curl_setopt($ ch,CURLOPT_URL,“http://www.exaple.com/service_script.php”);

curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ ch,CURLOPT_TIMEOUT,1);

$ result_curl = curl_exec($ ch);

curl_close($ CH);