php - 在 CakePHP 2.x 中创建 Cron 作业

标签 php cakephp cron

我尝试在我的 CakePHP 2.x 应用程序中创建一个 cron 作业。但我在网上阅读的所有资源似乎要么彼此完全不同,缺乏一致性,要么用非常复杂的术语进行解释。

基本上我创建了以下文件 MyShell.php/app/Console/Command

<?php 

class MyShell extends Shell {

    public function sendEmail() {

        App::uses('CakeEmail', 'Network/Email');

        $email = new CakeEmail();

        $email->from('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5734363a322538391733253e2d79343879223c" rel="noreferrer noopener nofollow">[email protected]</a>');

        $email->to('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2142404c44534e4f614553485b0f424e0f544a" rel="noreferrer noopener nofollow">[email protected]</a>');

        $email->subject('Test Email from Cron');

        $result = $email->send('Hello from Cron');

    }

}

?>

我想说的是每天晚上午夜运行这段代码。

接下来我该做什么?因为接下来的部分真的让我困惑!我读过这本书:http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html我应该在终端中运行一些代码以使其在特定时间执行此操作等。而且我可以使用我的托管提供商相当轻松地设置这些代码。

但我对 Console 目录感到相当困惑。什么应该放在这里的哪个文件夹中:https://github.com/cakephp/cakephp/tree/master/app/Console

/Console/Command
/Console/Command/Tasks
/Console/Templates

还注意到许多文件是.php(例如我的Shell文件也是.php),但根据我阅读的Cron作业文档,执行的文件应该是.sh?

有人可以对此进行更多说明吗?

调用该命令的代码是什么?

例如会认为这是不正确的:0 0 * * * cd /domains/driz.co.uk/html/App && cake/Console MyShell sendEmail

谢谢

最佳答案

没有。仅用 PHP 是没有办法做到这一点的。但这并不重要,因为 cron 很容易设置。

在您链接到的那篇文章中,您仍然需要设置一个 cron - 区别只是您设置了一个 cron,它运行所有其他 cron - 而不是为每个作业设置一个 cron。因此,无论哪种方式,您都必须学习创建 cron。

这些说明取决于您服务器的操作系统以及您使用的主机。有些主机可以通过 GUI 界面(如 cPanel 或其他东西)设置 cron 作业,而无需触摸终端。

通常很容易在网上找到有关如何使用主机或服务器操作系统设置 cron 作业的说明,但如果遇到问题,请使用主机名称以及服务器操作系统和版本更新您的问题。

还有----------------------------------

在 cron 作业中,您通常会运行 shell 脚本 (.sh)。但在本例中不必担心这一点;你的将以 .php 结尾。

回复:目录结构:

/Console/Command 是新文件所在的位置。

如果您正在执行大量 shell 操作,您可能需要将通用代码抽象到 /Console/Command/Task 文件夹中。了解更多相关信息 here 。您的情况可能不需要这样做。

/Console/Command/Templates 是您可以为蛋糕烘焙控制台放置自定义模板的位置 - 现在不用担心。

如果我只需要运行几个 cron 作业,那么我只创建一个名为 CronJobsShell.php 的文件,并将它们全部放入其中。

真的,你应该阅读 Cake 的 documentation on shells从开始到结束。它会给你一个很好的画面,让你了解这一切是如何结合在一起的。

关于php - 在 CakePHP 2.x 中创建 Cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215156/

相关文章:

unix - 如何列出所有用户的所有 cron 作业?

php - sql中的if/Else/Else if/语句

php - 需要帮助将我的 PHP 应用程序转换为 Coldfusion。谁能帮忙

php - 如何正确地将设置传递给 CakePHP 中的组件

linux - 定期以自动方式导出 phpmyadmin 的查询

php - 设置 php sessionclean cron 作业以在 chroot 环境中运行

php - 数据库活在过去?

php - Curl 以空字符串响应。如何获取更多信息?

mysql - 从与 CakePhp 中的外键关联的两个表中检索数据

css - CKEditor 和 CakePHP 改变高度