我正在尝试列出在PHP上运行计划任务的不同方法。我的目的是提供一种在PHP中运行调度任务的通用方法。到目前为止,我已经:
1) 分析站点流量。如果您每天收到770次点击(即每2分钟一次),并且您计划在早上6:00运行一个任务,并且访问者在5:59时请求一个页面,那么运行该任务,因为下一个访问者将在平均早上6:01到达。在本例中,Run = exec('/usr/bin/php -f /home/account/cron.php')
(+)只要路径正确,就能在所有平台上工作。
(-)需要一定的CPU功率。
(-)要求exec()
(-)在较小的地点或流量剧增的地点是不准确的。
2) 改进版本。当用户请求页面并打算运行任务时,不要使用exec(),而是在将内容刷新给用户之后使用include()。
(+)在所有平台上工作。
(+)禁止执行。
(-)需要一定的CPU功率。
(-)在较小的地点或流量剧增的地点是不准确的。
3) 运行一个独立的进程后台,以便它在一个常数循环中运行。提供一个管理界面,让您“开始”和“结束”的“服务”。然后,它将使用fsockopen()调用无限运行的.php脚本。它使用睡眠()来不消耗资源,并在时机成熟时醒来(请参阅: time_sleep_until())。它可以搜索文件并读取它们,以了解何时运行什么任务。您可以创建文件“run - that 3.00 it”,使调度程序在其中运行代码。
(+)在所有平台上工作。
(+)禁止执行。
(+)可能相当准确(例如,如果它每分钟睡觉)。
(-)不稳定-服务器崩溃会完全停止调度程序。
(-)一些主机不喜欢进程运行在24/7/365 =资源占优势?
4) 直接在Linux和.上运行exec('crontab')
(+)它不是资源霸主。
(+)准确。
(-) exec()
(-)并不能在所有平台上工作。
5) 请求cPanel凭据并向其发帖子以创建/管理/删除crons。
(+)准确
(+)它不是资源霸主。
(-)对安全不利
(-)需要用户详细信息=可用性降低
(-)并不能在所有平台上工作(需要在cPanel上不工作的)。
(-)需要cPanel。
还有其他想法吗?
发布于 2009-12-08 17:09:03
您建议的几乎所有方法都是丑陋的,尽管大多数方法都会奏效。
我丑陋的另一种选择是在本地机器上设置cron,该机器连接互联网,运行curl命令,只需几分钟。
它和您所有的解决方案一样难看,但它稍微更可靠一些。
发布于 2009-12-10 15:24:25
我使用一个名为VisualCron的windows工具在远程服务器上ping http-密码保护脚本,然后执行特定的任务。V也内置了不错的电子邮件状态通知。
请注意,这与Zack关于使用本地cron+curl或cron+wget的文章非常相似
http://www.visualcron.com bluetheme.png
发布于 2009-12-09 06:32:01
你曾经使用过windows任务调度程序或听命吗?可以使用它作为UNIX上CRON的替代。您可以(1)编写一个PHP脚本来执行所有必要的杂务(2)在UNIX上设置一个CRON作业,或者在Windows上设置一个计划任务,以便通过PHP执行这个脚本。
还可以通过从远程机器从HTTP打开脚本来执行脚本。远程计算机可以是UNIX或Windows机器。可以使用惠特代替web浏览器,这两种平台都可以使用它。
https://stackoverflow.com/questions/1812436
复制相似问题