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

发布于 2024-11-17 11:33:16 字数 329 浏览 3 评论 0原文

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

案例:

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

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

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

谢谢

How run zend framework action (inside index controller) by cron every 12 hours?

The case:

  1. I have basic(no modules) zend project (1.11) that created by zf tool.

  2. Inside main IndexController exist cronAction() - url http://mydomain/index/cron.

  3. Need to run cronAction() once per 12 hours by cron.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

还不是爱你 2024-11-24 11:33:16

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

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

您还可以使用其他工具来完成此操作,例如 lynx 或 wget,而不是必要的 curl - 上面只是一个示例。

Find the crontab file and add this line:

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

You can also do it with other tools, such as lynx or wget, not necassarily curl - the above is just an example.

清音悠歌 2024-11-24 11:33:16

我知道我有点晚了,但我想留下另一个解决方案,也许它可以帮助其他人,如果您在模型中有业务规则,则可以在 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 作业

I know I am bit late but I would like to leave another solution, maybe it help other people, you could run the file in cron if you have your business rule inside model

By creating a file in the public folder with the content below. Ex.: 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();

Then add a cron tab entry

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

It should work better than first answer since you will run using PHP CLI then you won't have execution time limit of php script, in case of your script takes more than one minute and you don't need network connection to run that cron job

优雅的叶子 2024-11-24 11:33:16

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

In Zend Framework 2 You can run a cron job using console routes. Take a look at the example posted here: http://collabedit.com/58v4v

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文