开始使用cron作业和PHP(Zend Framework)

时间:2009-05-04 07:42:26

标签: php zend-framework cron queue scheduled-tasks

我对cron工作的主题完全陌生,所以我不知道从哪里开始学习它们;何时,为什么或如何在我的Zend Framework应用程序或PHP中使用它们。

任何人都可以通过一个例子解释这个过程,或者推荐一些好的资源来开始吗?

5 个答案:

答案 0 :(得分:3)

Cron jobs是一种在Linux操作系统中自动执行任务的机制。并且Zend Framework几乎没什么可做的。该框架可以帮助您在PHP中开发高级cron任务。但是你必须在shell中设置你的cron作业。

谷歌搜索“如何设置cron作业”在顶部显示了这个链接:

http://www.adminschoice.com/docs/crontab.htm

我相信这篇文章会对你有所帮助。

P.S。

作为执行命令,您应该输入类似的内容:

/usr/local/bin/php -f <path_to_your_php_script>

其中第一个路径是php cli可执行文件的完整路径,在您的计算机上可能有所不同。您可以通过发出以下命令来确保:

which php

祝cron工作好运;)

答案 1 :(得分:2)

由于Zend Framework是一些松散耦合组件的集合,您可以在每个PHP脚本(包括CLI脚本)中使用您喜欢的组件。但是,您必须确保PHP可以找到相关的Zend Framework类,因此您必须将Zend Framework库路径添加到include_path。然后,您可以使用Zend_Loader_Autoloader(ZF&gt; = 1.8)或Zend_Loader(ZF&lt; 1.8)设置自动加载,以简化生活。现在,您应该可以访问可以随意使用的所有Zend Framework组件。

与其他所有脚本或程序一样,这个PHP脚本可以自然地在cron作业中使用。还有一点需要注意的是,您必须确保运行cron作业的用户具有对Zend Framework库路径的读访问权,否则PHP无法读取Zend Framework文件。

如果您的问题是针对在CLI脚本中使用MVC组件的,那么我必须承认我没有任何相关经验。我认为必须做出不可忽视的努力来实施适当的请求,响应,分心和路由类。

修改

有关详细信息,请参阅this article

答案 2 :(得分:2)

也许现实生活中的例子会有所帮助。几年前,我使用Zend Framework开展了一个事件日历项目。在此日历中,用户可以创建事件并将1个或多个日期附加到事件中。当然,我将其实现为我的数据库中的多对一连接,但这意味着为了附加日期,事件必须首先存在。但是,我想允许用户在创建事件时添加日期,而不是创建事件后添加日期。换句话说,我希望用户同时编辑事件的所有方面,并仅在他们点击“保存”时提交。

我通过在用户开始创建事件记录时将新的空事件记录插入数据库来解决问题。当用户点击“保存”时,该空记录被填写并保存,或者当用户点击“取消”时被删除。用户在没有单击“取消”的情况下导航离开时出现问题,并且空事件记录保留在数据库中。最终,数据库将填满这些毫无意义的空事件,事情可能会变得丑陋。

我编写了一个名为“maintenance()”的函数,除其他外,它删除了超过24小时的所有未保存的记录。我设置了一个夜间运行的cron作业并执行了一个运行maintenance()的命令行php脚本。

您可以使用cron作业的其他内容:

  • 向新用户发送一批电子邮件。 (每5分钟一次?)
  • 更新用户统计信息(每小时?)
  • 当服务器没有受到流量冲击时进行资源密集型操作(每晚午夜,或星期日晚上每周一次?)
  • 响应用户请求时未发生的任何其他事件(Jeff称之为“带外”)。

答案 3 :(得分:1)

你可能也对{{3gp>

答案 4 :(得分:1)

这是使用Zend Framework实现cron系统的好方法的链接:

Cron tasks in Zend Framework apps

Personnaly,我已经对它进行了调整,因此参数可能是动态的,但基数是相同的: - )