【问题标题】:Best method for Cron in CakePhpCakePhp 中 Cron 的最佳方法
【发布时间】:2013-04-04 16:15:05
【问题描述】:

我目前正在从事 CakePhp 中的一个项目,其中发送电子邮件和其他活动需要 Cron 作业,如果我在自定义控制器中使用核心 php 方法创建 CRON,那么它可以正常工作并且也可以正常工作如果我使用 CakePhp SHELL 类创建了 Cron,那么它也可以在 Core PHP 方法中工作。

现在我很困惑哪种方法最适合这项工作在 Shell 中使用的核心 PHP 方法或在自定义控制器中使用的核心 PHP 方法,谁能帮助我了解哪种方法最适合使用以及为什么?

提前谢谢你

【问题讨论】:

    标签: php cakephp cron cakephp-2.1 cron-task


    【解决方案1】:

    我总是将 Shell 用于 cronjobs,而不是控制器操作。仅仅因为 shell 用于不需要任何图形表示的“裸”操作。此外,我的大多数应用程序都使用身份验证,因此如果您希望 cron 守护程序在调用操作之前对其进行身份验证,则需要为您的 cronjobs 构建一个自定义启动器。使用 shell,您无需任何身份验证即可访问所有模型和数据。

    即使您的应用程序不使用身份验证,您肯定也不希望任何使用您的应用程序的人或机器人通过简单地调用启动 cronjob 的控制器操作的 URL 来触发您的 cronjobs,因此也可以从从安全的角度来看,Shell 是必经之路。

    还可以查看http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html 以获取有关如何让您的 shell 作为 cronjobs 运行的更多信息,这非常简单。

    【讨论】:

      【解决方案2】:

      这取决于您通过电子邮件发送给网站用户的数据

      -> 如果您不使用太多表并加入以通过电子邮件向其发送数据,则最好使用核心 php,并且在核心 php 中执行和获取数据比在 cakephp 框架中更快。

      -> 但是如果需要使用不同的模型和关系,那么你可以使用 cakephp 方法来利用 ORM 概念

      【讨论】:

      • 如果项目是使用 CakePHP 构建的,您为什么使用这些模型?仅将原始 PHP/SQL 用于 cron 作业是自找麻烦。
      【解决方案3】:

      应使用 cli 管理 Cron 作业,例如:

      # send pending emails once an hour
      0 * * * * cd /abs/path/to/my/app && Console/cake EmailQueue.Sender --quiet
      

      here's an example email sender。对于 cli 发起的请求 (cron) 使用 cli,可以避免与访问控制、会话等相关的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-30
        • 2012-11-05
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        相关资源
        最近更新 更多