在Plesk 11.5.30上使用Bolt设置cron作业

时间:2014-09-29 09:33:09

标签: cron plesk bolt-cms

我正在尝试通过Plesk 11.5.30管理控制台使用Bolt.cm设置一个cron作业。
Bolt任务调度程序文档:https://docs.bolt.cm/v20/tasks

预定任务

我为crontab用户设置了apache,如下所示:

Min     H     DM     M     DW     Command
0      */1     *     *     *      /var/www/vhosts/mysite.com/httpdocs/app/nut cron
0      */1     *     *     *      httpdocs/app/nut cron

这里有两个不同命令的原因是我在Plesk的另一个线程中读到了命令路径应该是域的相对路径。我假设如果第一个失败,第二个仍然会运行。我还假设上面每小时都会运行cron。

Bolt配置

在我的配置文件中,cron_hour设置为凌晨3点。但是,当侦听器设置为每小时事件CRON_HOURLY时,我假设绕过/忽略该设置。无论哪种方式,此设置已运行超过48小时,尚未见到任何影响。

螺栓设置

作为一项测试,我已将以下内容添加到我的Bolt扩展程序中,以便它在运行时只需向我发送一封电子邮件(以下内容已被删除以保持简短)。

use \Bolt\CronEvents;

class Extension extends \Bolt\BaseExtension 
{
    function initialize() {
        $this->app['dispatcher']->addListener(CronEvents::CRON_HOURLY, array($this, 'cronNotifier'));
    }

    function cronNotifier() {
        // send email script...
    }
}

我已经测试了我的电子邮件脚本,所以我知道它有效。使用cron作业设置并假设正在运行此功能永远不会被击中。更重要的是,在数据库中bolt_cron表仍然是空的。

如果有人可以提出建议,我可以试着让它运行起来,我将不胜感激。

THE FIX

为了解决这个问题,我改变了我的计划,每5分钟执行一次(更快的调试循环)。然后我做了以下发现:

  • 我必须在坚果文件的public上设置执行权限(因此apache用户可以执行它)
  • 对于服务器我只使用完整路径版本

感谢@Gawain提示我正确的方向。

1 个答案:

答案 0 :(得分:1)

预定任务

是的,这看起来是正确的。最近增强了对目录位置的处理,但您以前需要在Bolt目录中调用nut。

Bolt配置

cron_hour仅适用于每日和更长时间段。我最近修复了一个错误,它阻止了午夜到凌晨3点的任务。

好的,Bolt日志中应该记录有关运行cron事件的痕迹。

如果您运行此操作,您是否看到每小时作业触发器和您的电子邮件已发送?

./app/nut cron --run=cron.Hourly

如果可行,那么问题出在系统cron / crontab上,如果直接编辑你使用的是crontab -e吗?

此外,如果您使用较旧的主服务器结账,您可以尝试在crontab命令部分前加上

cd /var/www/vhosts/mysite.com/httpdocs &&

...每次调用./app/nut

之前