我有一个用PHP编写的Web应用程序(Zend Framework),我想偶尔执行一些(少数)脚本。例如每天一次。我知道这可以通过使用crontab和cronjobs完成,但并非所有托管提供商都有这些可用。因此,我正在寻找一种不使用Cronjob的解决方案。
你是如何解决这个问题的? 有什么可能性?
答案 0 :(得分:4)
答案 1 :(得分:4)
Cron jobs真的只提供一些基本的好处:调度,执行和日志记录。这些都是很容易在PHP应用程序中复制的东西......
第一步:创建任务表
你需要存储:
第二步:执行
您可以选择如何实际触发任务:
无论它如何启动,它都会触发实际的cron代码,该代码决定是否有任何要运行的任务以及要运行的任务。
第三步:记录
这个应该很简单。只需将任务期间发生的事情记录到您可以阅读的文件中,以确保其正常工作。
...
在运行任务之前,您需要更新上一个运行日期,并在运行任务后,根据其频率设置下一个运行日期。这种方法的唯一后备是当没有人访问网站时,在下一个访问者到来之前,不会执行任何cron作业。
答案 2 :(得分:1)
检查这些链接。我目前正在几个ZF项目中使用修改后的引导程序(基于这些文章),并且从命令行运行应用程序非常容易。
答案 3 :(得分:0)
我做过类似的@Adrian Schneider解决方案。如果要为应用程序添加更多一致性,可以添加一个接口Cronable,强制实现它的类添加一个cron()函数,该函数将处理cron的内部逻辑,有时是不同的。所有这些都可以通过cron包装器以类似的方式进行包装和调用,这将是系统中cron调用的唯一脚本,它将决定当前要执行的PHP cron作业是什么。您可以在here的回复中获得更多详细信息。
答案 4 :(得分:0)
我同意Arne的回答,但是如果您已经在使用zend框架,那么您应该使用内置的Zend_Queue来实现您的解决方案。 要查看如何实现,请在此处链接到描述如何设置基础结构的其他问题。 Infrastructure for Running your Zend Queue Receiver