CakePhp中Cron的最佳方法

CakePhp中Cron的最佳方法,php,cakephp,cron,cakephp-2.1,cron-task,Php,Cakephp,Cron,Cakephp 2.1,Cron Task,我目前正在CakePhp的一个项目中工作,其中发送电子邮件和其他活动需要Cron作业,我对此有点困惑,如果我在custom controller中使用核心php方法创建Cron,那么它工作得很好&如果我使用CakePhp外壳类创建Cron,那么它也可以在核心php方法中工作 现在我搞不清楚哪种方法最适合这个工作,核心PHP方法在Shell中使用,还是核心PHP方法在定制控制器中使用,有人能帮我了解哪种方法最适合使用吗&为什么 提前感谢这取决于您通过电子邮件向站点用户发送的数据 ->如果您没有使用

我目前正在CakePhp的一个项目中工作,其中发送电子邮件和其他活动需要Cron作业,我对此有点困惑,如果我在custom controller中使用核心php方法创建Cron,那么它工作得很好&如果我使用CakePhp外壳类创建Cron,那么它也可以在核心php方法中工作

现在我搞不清楚哪种方法最适合这个工作,核心PHP方法在Shell中使用,还是核心PHP方法在定制控制器中使用,有人能帮我了解哪种方法最适合使用吗&为什么


提前感谢

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

->如果您没有使用太多的表和join来通过电子邮件发送数据,那么最好使用核心php,并且在核心php中执行和获取数据要比在cakephp框架中更快


->但是如果有必要使用不同的关系模型,那么您可以使用cakephp方法来利用ORM概念,这取决于您通过电子邮件发送给站点用户的数据

->如果您没有使用太多的表和join来通过电子邮件发送数据,那么最好使用核心php,并且在核心php中执行和获取数据要比在cakephp框架中更快


->但是,如果有必要使用不同的关系模型,那么您可以使用cakephp mathod来利用ORM概念

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

即使你的应用程序不使用身份验证,你也肯定不希望任何使用你的应用程序的人或机器人通过简单地调用启动cronjob的控制器操作的URL来触发你的cronjob,因此从安全角度来看,shell也是一种方法


另外,请查看有关如何使shell作为cronjobs运行的更多信息,这非常简单。

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

即使你的应用程序不使用身份验证,你也肯定不希望任何使用你的应用程序的人或机器人通过简单地调用启动cronjob的控制器操作的URL来触发你的cronjob,因此从安全角度来看,shell也是一种方法


另外,请查看有关如何使shell作为cronjobs运行的更多信息,这非常简单。

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

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

。对于cli启动的请求(cron),使用cli可避免与访问控制、会话等相关的问题。

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

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

。对于cli启动的请求(cron),使用cli可以避免与访问控制、会话等相关的问题。

如果项目是使用CakePHP构建的,为什么不使用这些模型?仅为cron作业使用原始PHP/SQL会带来问题。如果项目是使用CakePHP构建的,为什么不使用这些模型呢?仅为cron作业使用原始PHP/SQL会带来问题。