TYPO3调度程序任务 - 奇怪的行为

时间:2018-06-12 08:32:39

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

我使用TYPO3 6.2并使用E​​xtbase和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小时后,我在日志中收到一条错误消息:
  

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

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

2 个答案:

答案 0 :(得分: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;
    }


}

答案 1 :(得分:0)

调度程序任务启动方法之间存在一些差异:

  • 由cron安排:
    它是CLI PHP,它可能是另一个版本,至少是另一个配置,而不是由webserver启动的PHP(例如没有时间限制!),在TYPO3中它使用特殊cli-user执行。

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