1

我正在开发一个需要事件的网络应用程序。用户在特定时间创建事件,我需要执行脚本并在确切时间激活事件,以便事件可以开始。关于如何做到这一点的任何想法?我用谷歌搜索并通过堆栈溢出搜索,但我遇到的只是在特定时间多次执行。我需要的是在自动设定的时间执行。希望你能帮帮我,我很绝望。

4

2 回答 2

8

你有 3 个选项。我的建议:如果可以,请使用 cron,如果必须,请使用用户驱动,最后使用守护程序。

(1)cron(如评论中所述)

cron 是用于 linux 系统的调度程序,它将在您的系统上运行命令行作业。您通过 ssh 登录到您的服务器,输入crontab -e,然后添加如下一行:

4 5 * * * php /path/to/my/script.php

这将在每天早上 5:04 运行脚本。

<?php
// /path/to/my/script.php

// Do something

一些托管服务允许使用 GUI 输入 cron 作业。还有外部 cron 服务,它们会在特定时间为您调用 URL。

(2) 守护进程

这是最高级的选项,也是最不可靠的选项:您运行一个包含无限循环的命令行脚本。然后脚本会定期检查状态并做出响应。因为它可能在运行几个月后崩溃,所以您必须有第二个脚本来重新启动它以防万一。这是很多工作,但它是最灵活的方法。

<?php



while (1) {   

  // fetch $last_exec_timestamp from database

  if ($last_exec_timestamp < time() + 86400) {
    // set last_exec_timestamp to now in database

    // do something
  }
  sleep(5);

}

3. 用户驱动

如果您的网站上有大量流量,您可以在没有更多输出时在页脚中简单地包含一个作业。确保此代码速度很快,否则不幸的用户将等待它。

<?php

// fetch $last_exec_timestamp from database

if ($last_exec_timestamp < time() + 86400) {
  // set last_exec_timestamp to now in database
  // do something
}

还有更多奇特的“用户驱动”方法,我没有在另一个堆栈溢出问题中亲自测试过。

于 2013-04-02T09:18:02.513 回答
1

你正在寻找的是 CRON JOBS

http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/

于 2013-04-02T08:55:53.083 回答