TYPO3 调度程序任务 - 奇怪的行为
TYPO3 scheduler task - strange behavior
我使用的是 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 小时后,我会在日志中收到一条错误消息:
[scheduler]: Removing logged execution, assuming that the process is
dead. Execution of 'TYPO3\CMS\Extbase\Scheduler\Task' (UID: 5) was
started at 2018-06-10 16:40:00
然后,我必须自己在调度程序中停止任务。根据 documentation,class 中的方法不需要 return true 或 false。那么,为什么任务在调度程序启动时不成功?
调度任务启动方式有一些区别:
由 cron 安排:
它是 CLI PHP,它可能是另一个版本,至少是不同于 Web 服务器启动的 PHP 的另一种配置(例如,没有时间限制!),在 TYPO3 中,它使用特殊的 cli-user
.
开始于 BE:
这是在网络服务器上下文中启动的:(通常)您有时间限制,当前 TYPO3-BE 用户执行任务。
我做了一个这样的调度任务
<?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;
}
}
我使用的是 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 小时后,我会在日志中收到一条错误消息:
[scheduler]: Removing logged execution, assuming that the process is dead. Execution of 'TYPO3\CMS\Extbase\Scheduler\Task' (UID: 5) was started at 2018-06-10 16:40:00
然后,我必须自己在调度程序中停止任务。根据 documentation,class 中的方法不需要 return true 或 false。那么,为什么任务在调度程序启动时不成功?
调度任务启动方式有一些区别:
由 cron 安排:
它是 CLI PHP,它可能是另一个版本,至少是不同于 Web 服务器启动的 PHP 的另一种配置(例如,没有时间限制!),在 TYPO3 中,它使用特殊的cli-user
.开始于 BE:
这是在网络服务器上下文中启动的:(通常)您有时间限制,当前 TYPO3-BE 用户执行任务。
我做了一个这样的调度任务
<?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;
}
}