我使用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
}
}
?>
它似乎工作正常,但行为很奇怪:
[scheduler]:删除记录的执行,假设进程是 死。执行&#39; TYPO3 \ CMS \ Extbase \ Scheduler \ Task&#39; (UID:5)是 开始于2018-06-10 16:40:00
然后,我必须在调度程序中自己停止任务。根据{{3}},类中的方法不需要返回true或false。那么,为什么在调度程序启动时任务不成功?
答案 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用户执行任务。