php - 在 Media Temple 网格服务上运行 CakePHP Cron 作业

标签 php cakephp cron mediatemple

我的 CakePHP 应用程序中有以下 Shell:

<?php 

class MyShell extends Shell {

    public function sendEmail() {

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

        $email = new CakeEmail();

        $email->from('cameron@driz.co.uk');

        $email->to('cameron@driz.co.uk');

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

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

    }

}

?>

我尝试每 5 分钟运行一次,作为对我的 Media Temple Grid Service 主机的测试。

/home/####/domains/driz.co.uk/html/app && Console/cake my_shell send_email 

cd /home/####/domains/driz.co.uk/html && Console/cake my_shell send_email 

cd /home/####/domains/driz.co.uk/html/app && Console/cake my_shell send_email 

php /home/####/domains/driz.co.uk/html/app/Console/Command/MyShell.php

我已经尝试了以上所有方法,但都不起作用...知道为什么吗?

(注意:时间缺失,因为您在管理面板中指定的时间与实际命令分开)

有没有人有在 Media Temple 上运行 CakePHP 定时任务的经验?我问过 MT 支持,他们解释说前 3 行不起作用,因为它们不是对文件的直接命令(所以显然 CakePHP 文档仅适用于终端)。

最佳答案

以下是我为使其正常工作所做的工作:

修改了您的电子邮件脚本以包含一些输出:

class MyShell extends Shell {
    public function sendEmail() {
        App::uses('CakeEmail', 'Network/Email');
        $email = new CakeEmail();
        $email->from('user@domain.com');
        $email->to('user@domain.com');
        $email->subject('Test Email from Cron');
        $result = $email->send('Hello from Cron');
        $this->out('Email sent successfully.');
    }
}

接下来,我通过控制台进行了测试以确保它可以正常工作。对于上面的代码,根据 docs 省略了“MyShell”中的“Shell”后缀。第二个参数是函数名。这是从应用程序根目录为我工作的 CLI 命令,/home/#####/domains/mydomain.com/html/cake/cakephp/app。

Console/cake my sendEmail

输出:

Welcome to CakePHP v2.4.1 Console
---------------------------------------------------------------
App : app
Path: /nfs/c##/h##/mnt/#####/domains/mydomain.com/html/cake/cakephp/app/
---------------------------------------------------------------
Email sent.

我在 MT (gs) 仪表板命令框中的值是根据 this 构建的.它包括:

cd 'app_root' && Console/cake 'class_name_sans_shell' 'function_name'

对于上面的代码,结果是:

cd /home/#####/domains/mydomain.com/html/cake/cakephp/app && Console/cake my sendEmail

值得注意的是,“Console/cake”在本例中是我们的可执行文件,因此这就是我们正在运行的程序。

关于php - 在 Media Temple 网格服务上运行 CakePHP Cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305329/

相关文章:

css - 单选按钮和标签 Cakephp 之间的空间

PHP,crontab,DateInterval : Convert human-readable interval to crontab format

javascript - 使用 JavaScript 解析 crontab 行

javascript - 调整 youtube 视频的大小(在页面上和点击)

php - 用php代码调用javascript函数

cakephp - 如何让关联模型运行 __construct?

node.js - CRON + Nodejs + 多核 => 行为?

javascript - 使用 AJAX 将变量从 JavaScript 传递到 PHP 不会显示任何内容

php - php中事件的含义

cakephp - 使用两个(复合)外键关系链接两个表