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