【问题标题】:How to execute long running tasks in PHP without cron如何在没有 cron 的 PHP 中执行长时间运行的任务
【发布时间】:2011-06-17 11:54:50
【问题描述】:

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

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

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

当进程执行时 - 网站恢复正常行为。而这一切都是自动发生的。

没有 cron 可以吗?

【问题讨论】:

标签: php process cron backup


【解决方案1】:

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

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

// If you needed the output
echo $execute; 

一旦此脚本运行,设置一个标志(可以在数据库中或在文件中的简单写入或其他东西)。当脚本结束时,删除这个标志。

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

【讨论】:

    【解决方案2】:

    在您的页面上,您可以有一个数据库值,即script_runninng,然后检查该值是否 = 0,发送命令,如果 = 1 则不执行任何操作。然后确保在命令开始时将值设置为 1,在命令结束时将值设置为 0。

    【讨论】:

      【解决方案3】:

      你可以使用 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);

      【讨论】:

        猜你喜欢
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多