我目前正在从事 CakePhp 中的一个项目,其中发送电子邮件和其他活动需要 Cron 作业,如果我在自定义控制器中使用核心 php 方法创建 CRON,那么它工作正常并且如果我创建了Cron 使用 CakePhp SHELL 类,然后它也可以在核心 PHP 方法中工作。
现在我很困惑哪种方法最适合这项工作在 Shell 中使用的核心 PHP 方法或在自定义控制器中使用的核心 PHP 方法,任何人都可以帮助我了解哪种方法最适合使用以及为什么?
先感谢您
我目前正在从事 CakePhp 中的一个项目,其中发送电子邮件和其他活动需要 Cron 作业,如果我在自定义控制器中使用核心 php 方法创建 CRON,那么它工作正常并且如果我创建了Cron 使用 CakePhp SHELL 类,然后它也可以在核心 PHP 方法中工作。
现在我很困惑哪种方法最适合这项工作在 Shell 中使用的核心 PHP 方法或在自定义控制器中使用的核心 PHP 方法,任何人都可以帮助我了解哪种方法最适合使用以及为什么?
先感谢您
我总是将 Shells 用于 cronjobs,而不是控制器操作。仅仅因为 shell 用于不需要任何图形表示的“裸”操作。此外,我的大多数应用程序都使用身份验证,因此如果您希望 cron 守护程序在调用操作之前对其进行身份验证,则需要为您的 cronjobs 构建一个自定义启动器。使用 shell,您无需任何身份验证即可访问所有模型和数据。
即使您的应用程序不使用身份验证,您肯定也不希望任何使用您的应用程序的人或机器人通过简单地调用启动 cronjob 的控制器操作的 URL 来触发您的 cronjobs,从安全角度来看也是如此看来,贝壳是要走的路。
另请查看http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html以获取有关如何让您的 shell 作为 cronjobs 运行的更多信息,这非常简单。
这取决于您要通过电子邮件发送给站点用户的数据
-> 如果您不使用太多表并加入以通过电子邮件向其发送数据,则最好使用核心 php,并且在核心 php 中执行和获取数据比在 cakephp 框架中更快。
-> 但是如果有必要使用不同的模型和关系,那么你可以去 cakephp mathod 来利用 ORM 概念
应使用 cli 管理 Cron 作业,例如:
# send pending emails once an hour
0 * * * * cd /abs/path/to/my/app && Console/cake EmailQueue.Sender --quiet
这是一个示例电子邮件发件人。对于 cli 发起的请求 (cron),使用 cli 可以避免与访问控制、会话等相关的问题。