crontab不运行PHP命令



我正在使用pheanstalk php库的Symfony 3框架。我使用Linux Debian Jesse在服务器上运行该应用程序。创建工作正常,如果从终端运行工人,则可以按照应有的效果。但是,当我将命令添加到crontab时,我会发现命令不起作用。没有任何登录/var/main/用户可以帮助我进行调试。我会很高兴任何帮助。

这是我的工作命令(仅执行函数):

protected function execute(InputInterface $input, OutputInterface $output)
{
    $output->writeln("n<info>Beanstalk worker service started</info>");
    $tubes = $this->getContainer()->get('app.job_manager.power_plant')->getTubes();
    if ($input->getOption('one-check')) {
        // run once
        foreach ($tubes as $tubeName) {
            if ($tubeName != "default") {
                $this->getContainer()->get('app.queue_manager')->fetchQueue($tubeName);
            }
        }
        $output->writeln("n<info>Beanstalk worker completed check and stoped</info>");
    } else {
        // run forever
        set_time_limit(0);
        max_execution_time(0);
        while (1) {
            foreach ($tubes as $tubeName) {
                if ($tubeName != "default") {
                    $this->getContainer()->get('app.queue_manager')->fetchQueue($tubeName);
                }
            }
        }
        $output->writeln("n<info>Beanstalk worker stoped</info>");
    }
}

这是我的app.queue_manager函数,可以从队列和运行命令中获取工作:

public function fetchQueue($tubeName)
{
    if ($this->pheanstalk->getConnection()->isServiceListening()) {
        while (true === is_object($job = $this->pheanstalk->watch($tubeName)->ignore('default')->reserve(self::WATCH_TIMEOUT))) {
            $data = json_decode($job->getData(), true);
            $this->worker($data);
            $this->pheanstalk->delete($job);
        }
    }
}

和运行命令的工人

public function worker($data)
{
    $application = new Application($this->kernel);
    $application->setAutoExit(false);
    $parameters = [];
    $parameters['command'] = $data['command'];
    foreach ($data['meta'] as $key => $param) {
        $parameters[$key] = $param;
    }
    $input = new ArrayInput($parameters);
    $output = new NullOutput();
    return $application->run($input, $output);
}

这是我的crontab,不起作用:

@reboot /usr/bin/php /var/www/mose-base/bin/console beanstalk:worker:start

我创建了另一个可正常工作的cron选项卡。它每15分钟起作用一次,而区别在于没有无限循环(而(1)),因此它仅通过试管一次就进行一次。但这不是我想要的。我想要像我使用第一个crontab创建的无限循环:

*/15 * * * * /usr/bin/php /var/www/mose-base/bin/console beanstalk:worker:start --one-check

如果它在控制台中起作用,则对您的文件用户权限无效。检查它。

您可以通过电子邮件报告错误

*/15 * * * * /usr/bin/php /var/www/mose-base/bin/console beanstalk:worker:start --one-check 2>&1 | mail -s "mysql_dump" example@mail.example

我使用了rc.local。它解决了问题。tnx freudianslip

相关内容

  • 没有找到相关文章

最新更新