Задача планировщика TYPO3 - странное поведение - PullRequest
0 голосов
/ 12 июня 2018

Я использую 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

Затем я должен сам остановить задачу впланировщикСогласно документации , методы внутри класса не должны возвращать true или false.Итак, почему задача не является успешной при запуске планировщиком?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я сделал задачу планировщика вот так

<?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;
    }


}
0 голосов
/ 12 июня 2018

Существуют некоторые различия между методами запуска задач планировщика:

  • запланировано cron:
    это CLI PHP, который может быть другой версией, по крайней мере, другой конфигурацией, чем запущенный PHPчерез веб-сервер (например, без ограничения по времени!), в TYPO3 он выполняется со специальным cli-user.

  • , запущенным в BE:
    это запускается в контексте веб-сервера:(обычно) у вас есть ограничение по времени, текущий пользователь TYPO3-BE выполняет задачу.

...