2011-06-17 72 views
1

让我们想象一下我的情况(这是假的,当然)...如何在PHP执行长时间运行的任务,而无需cron的

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

我要完成的是,当用户打开我的网站和一些PARAMS执行(例如,他在一周内的第一位访客)......不知何故用户发送信号给服务器 - 缓慢的过程,必须现在运行,但他并没有等待它的执行(那几分钟)......他只是看到服务器正在进行一些更新或其他任何事情的通知。在那段时间打开我的网站的任何其他用户也会看到该通知。

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

这可能没有cron?

+1

为什么不使用cron? – 2011-06-17 11:56:36

回答

2

检查Execution Operators。他们可能是你正在寻找的东西。 像这样

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

// If you needed the output 
echo $execute; 

一旦运行此脚本,设置一个标志(可能是数据库或文件或一些简单的写)。脚本结束时,删除此标志。

在您所有的其他页面 - 检查此标志。如果它是ON,则显示消息。

0

在您的页面上,您可能有一个数据库值,即script_runninng,然后检查值是否为0,发送命令,if = 1什么也不做。然后确保在开始时将值设置为1,在命令结束时将值设置为0。

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);

相关问题