【问题标题】:TYPO3 scheduler task - strange behaviorTYPO3 调度程序任务 - 奇怪的行为
【发布时间】:2018-06-12 08:32:39
【问题描述】:

我正在使用 TYPO3 6.2,并使用 Extbase 和 Fluid 创建了一个自定义扩展。 我做了一个自定义任务,以便在 TYPO3 调度程序模块中每小时执行一次。下面是它的样子:

<?php

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Backend\Utility\BackendUtility;

class ImportCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController {

    public function importCommand() {

    // some code

    }

}

?>

它似乎工作正常,但行为很奇怪:

  • 如果我手动执行任务:它工作正常
  • 如果我让调度程序每小时运行一次任务:它不起作用,任务卡住,24 小时后,我在日志中收到一条错误消息:

[调度程序]:删除记录的执行,假设进程是 死的。 'TYPO3\CMS\Extbase\Scheduler\Task' (UID: 5) 的执行是 开始于 2018-06-10 16:40:00

然后,我必须自己在调度程序中停止任务。根据documentation,类内的方法不需要返回真或假。那么,为什么调度程序启动时任务不成功?

【问题讨论】:

  • 你是否使用过 CRON 作业?

标签: typo3 scheduler fluid extbase typo3-6.2.x


【解决方案1】:

我做了一个这样的调度任务

<?php
namespace Vendor\Extensionname\Task;

/***************************************************************
 *  Copyright notice
 *
 *  All rights reserved
 *
 *  ...
 *
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/


/**
 * My scheduler task
 *
 */
class MyTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask  {


    /**
     * Execute, called by scheduler.
     *
     * @return bool TRUE if task run was successful
     */
    public function execute() {

        \TYPO3\CMS\Core\Utility\GeneralUtility::devLog(
            '[Vendor\\Extensionname\\Task\\MyTask]: Task run sucessfully', 'scheduler', 2);
        }
        return true;
    }


}

【讨论】:

  • 感谢您的回答。我做了这个,但结果是一样的:如果我手动执行它可以工作,如果它设置为自动它永远不会工作。顺便说一句,我尝试在我的任务中使用一个简单的 mail() 函数。
【解决方案2】:

调度器任务启动方式有一些区别:

  • 由 cron 计划:
    它是 CLI PHP,它可能是另一个版本,至少是由网络服务器启动的 PHP 之外的另一个配置(例如,没有时间限制!),在 TYPO3 中它使用特殊的 cli-user 执行。

  • 在 BE 中开始:
    这是在网络服务器上下文中启动的:(通常)您有时间限制,当前 TYPO3-BE 用户执行任务。

【讨论】:

  • 你好 Bernd,谢谢,但这并没有给我任何关于我的问题的线索
  • 你需要比较PHP版本和它的配置。尝试一个简单的任务,例如将 php-info 写入文件,然后比较每次调用的文件。
  • 都是5.6.30
  • 你比较过配置吗?尝试将 phpinfo 的信息保存到文件中并进行比较。
  • 看来问题不是因为PHP版本之间的差异,而是因为命令永远不会返回true或false。 Heinz Schilling 的回答完美。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多