2

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

计划任务

crontabapache用户设置如下:

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。

螺栓配置

在我的配置文件中,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表仍然是空的。

如果有人可以帮助提出一些建议,我可以尝试让它运行,我们将不胜感激。

修复

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

  • 我必须为 nut 文件设置 public 的执行权限(以便 apache 用户可以执行它)
  • 对于我使用的服务器,我只使用完整路径版本

感谢@Gawain 提示我朝着正确的方向前进。

4

1 回答 1

1

计划任务

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

螺栓配置

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

好的,Bolt 日志中应该记录了有关运行 cron 事件的跟踪。

如果你运行这个,你看到每小时的工作触发器和你的电子邮件发送了吗?

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

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

此外,如果您正在对 master 进行较旧的结帐,则可以尝试在 crontab 命令部分添加前缀

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

...在每次调用之前./app/nut

于 2014-09-29T10:19:46.337 回答