3

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

谁能用一个例子解释这个过程,或者推荐一些好的资源来开始?

4

5 回答 5

3

Cron 作业是一种在 Linux 操作系统中自动执行任务的机制。Zend 框架几乎没有什么可做的。不过,该框架可以帮助您在 php 中开发高级 cron 任务。但是你将不得不在 shell 中设置你的 cron 作业。

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

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

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

附言

作为要执行的命令,您应该输入以下内容:

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

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

which php

祝 cron 工作好运;)

于 2009-05-04T07:50:58.130 回答
3

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

当用户开始创建事件记录时,我通过将新的空事件记录插入数据库来解决问题。当用户单击“保存”时,该空记录被填充并保存,或者当用户单击“取消”时被删除。问题发生在用户没有点击“取消”就离开,数据库中留下了空的事件记录。最终,数据库会被这些无意义的空事件填满,事情可能会变得很糟糕。

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

您可能会使用 cron 作业的其他事情:

  • 向新用户发送一批电子邮件。(每 5 分钟一次?)
  • 更新用户统计信息(每小时?)
  • 在服务器没有流量的情况下执行资源密集型操作(每晚午夜,还是每周日晚上一次?)
  • 没有响应用户请求而发生的任何其他事件(Jeff 称之为“带外”)。
于 2009-05-04T08:48:36.603 回答
2

由于 Zend 框架是某种松散耦合组件的集合,您可以在每个 PHP 脚本(包括 CLI 脚本)中使用您喜欢的组件。不过,您必须确保 PHP 可以找到相关的 Zend Framework 类,因此您必须将 Zend Framework 库路径添加到您的include_path. 然后,您可以使用Zend_Loader_Autoloader(ZF >= 1.8) 或Zend_Loader(ZF < 1.8) 设置自动加载,让生活更轻松。现在,您应该可以访问所有可以随意使用的 Zend Framework 组件。

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

如果您的问题是针对在 CLI 脚本中使用 MVC 组件,我必须承认我在这方面没有任何经验。我认为必须付出不可忽视的努力来实现适当的请求、响应、调度程序和路由类。

编辑:

请参阅这篇文章了解更多信息。

于 2009-05-04T07:53:10.510 回答
1

您可能还对如何使用 ZF 存储 cron 作业感兴趣

于 2009-05-04T08:09:59.300 回答
1

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

Zend Framework 应用程序中的 Cron 任务

个人而言,我已经对其进行了调整,因此参数可以是动态的,但基础是相同的:-)

于 2011-08-03T15:15:10.933 回答