如何每12个小时由cron运行zend框架操作(内部索引控制器)?

时间:2011-06-29 11:19:58

标签: zend-framework cron zend-controller

如何每12个小时由cron运行zend框架操作(内部索引控制器)?

案例:

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

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

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

  4. 由于

3 个答案:

答案 0 :(得分:13)

找到crontab文件并添加以下行:

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

您也可以使用其他工具,例如lynx或wget,而不是通常卷曲 - 上面只是一个例子。

答案 1 :(得分: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工作

答案 2 :(得分:0)

在Zend Framework 2中您可以使用控制台路由运行cron作业。请查看此处发布的示例:http://collabedit.com/58v4v