代码之家  ›  专栏  ›  技术社区  ›  Paolito75

类型3调度程序任务-奇怪的行为

  •  1
  • Paolito75  · 技术社区  · 7 年前

    我使用的是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\ToePo\\任务”(UID:5)是 开始于2018-06-10 16:40:00

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Heinz Schilling Phạm Văn Khải    7 年前

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

    <?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;
        }
    
    
    }
    
        2
  •  0
  •   Bernd Wilke πφ    7 年前

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

    • 由cron安排:
      可能是另一个版本的cli php,至少是webserver启动的php之外的另一个配置(例如,没有时间限制!),在类型3中,它是用 cli-user .

    • 开始于BE:
      这是在webserver上下文中启动的:(normaly)您有时间限制,当前typo3-be用户执行任务。