5

如何每 12 小时通过 cron 运行 zend 框架操作(在索引控制器内)?

案子:

  1. 我有由 zf 工具创建的基本(无模块)zend 项目(1.11)。

  2. 在主 IndexController 内部存在 cronAction() - url http://mydomain/index/cron

  3. 需要通过 cron 每 12 小时运行一次 cronAction()。

谢谢

4

3 回答 3

13

找到 crontab 文件并添加这一行:

0 0,12 * * * curl --silent --compressed http://mydomain/index/cron

您也可以使用其他工具(例如 lynx 或 wget)来执行此操作,而不必使用 curl - 以上只是一个示例。

于 2011-06-29T11:30:22.927 回答
5

我知道我有点晚了,但我想留下另一个解决方案,也许它可以帮助其他人,如果你在模型中有业务规则,你可以在 cron 中运行文件

通过在公用文件夹中创建一个包含以下内容的文件。例如:cron.php

 <?php

 // Define path to application directory
 defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

 // Define application environment
 defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

 // Ensure library/ is on include_path
 set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));

 /** Zend_Application */
 require_once 'Zend/Application.php';

 // Create application, bootstrap, and run
 $application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
 );
 $application->bootstrap();

 $model = new Application_Model_Name();
 $model->runTask();

然后添加一个 cron 选项卡条目

0 0,12 * * * php /path/to/your/project/cron.php

它应该比第一个答案更好,因为您将使用 PHP CLI 运行,那么您将没有 php 脚本的执行时间限制,如果您的脚本需要超过一分钟并且您不需要网络连接来运行该 cron 作业

于 2012-04-24T04:18:09.820 回答
0

在 Zend Framework 2 中,您可以使用控制台路由运行 cron 作业。看看这里发布的例子:http: //collabedit.com/58v4v

于 2014-05-22T10:48:05.017 回答