是否有任何现成的“穷人的crontab”实现(每分钟左右调用一次PHP脚本)可以轻松集成到Zend Framework中?最好使用视图脚本仪表板,用于作业管理,由控制器填充。
* 修改
我找到了Zend_Scheduler,这似乎与我追求的有些相似。缺少的是一种保持自我维持的机制(不依赖于外部的crontabbed wget或类似的东西),而是在实际页面加载时执行。
在Zend框架中是否有合适的位置我可以从$scheduler->run()
搭载? Bootstrap::__destruct()
或类似的?为了完成渲染视图,并在任何计划任务发生之前推送到客户端? (因此,客户不会受到可能安排的任何长期运行的影响。
(如果没有访问者,自然会有一些自然的准确性,但我的假设是,如果没有人来查看结果,就不必执行任何计划任务)
*的 EDIT2:
Zend_Scheduler太旧了,它与较新的Zend Framework版本不兼容,因此无法按预期工作。是否还有其他自持库可用于此目的?
答案 0 :(得分:0)
我猜你的意思是Drupal's poormanscron模块。 Zend Framework没有提供类似的东西,实际上Drupal也没有,但它们有由Drupal社区创建和支持的模块。
遗憾的是,Zend Framework缺少社区驱动的模块。你必须在野外的某个地方找到你的模块。我怀疑你会发现像poormanscron这样的东西,但也许你可以采用那个模块,并在ZF进行一些小改动。答案 1 :(得分:0)
您可以编写一个实现dispatchLoopShutdown()
方法的Zend_Controller_Plugin。我想这比在Bootstrap类中实现$scheduler->run()
更好。有关详细信息,请参阅http://framework.zend.com/manual/en/zend.controller.plugins.html。
答案 2 :(得分:0)
我要做的是一个桌面应用程序,每x秒调用一次URL(...说使用wget)。 Piggibacking到常规请求是坏主意IMO。
但事实上,你可以把它放在Boostrap-> run()之后。 run方法(完成后)将响应返回给客户端,因此你可以随意搞乱你需要的东西;)我会使用一些函数来获取url(file_get_contents()或更好的东西 - 这不需要等待实际内容 - 卷曲......也许)。并将实际代码存储在该URL上。它比piggibacking实际代码要求更好......