TYPO3 调度程序任务 - 奇怪的行为
Posted
技术标签:
【中文标题】TYPO3 调度程序任务 - 奇怪的行为【英文标题】:TYPO3 scheduler task - strange behavior 【发布时间】:2018-06-12 08:32:39 【问题描述】:我正在使用 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
然后,我必须自己在调度程序中停止任务。根据documentation,类内的方法不需要返回真或假。那么,为什么调度程序启动时任务不成功?
【问题讨论】:
你是否使用过 CRON 作业? 【参考方案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;
【讨论】:
感谢您的回答。我做了这个,但结果是一样的:如果我手动执行它可以工作,如果它设置为自动它永远不会工作。顺便说一句,我尝试在我的任务中使用一个简单的 mail() 函数。【参考方案2】:调度器任务启动方式有一些区别:
由 cron 计划:
它是 CLI PHP,它可能是另一个版本,至少是由网络服务器启动的 PHP 之外的另一个配置(例如,没有时间限制!),在 TYPO3 中它使用特殊的 cli-user
执行。
在 BE 中开始: 这是在网络服务器上下文中启动的:(通常)您有时间限制,当前 TYPO3-BE 用户执行任务。
【讨论】:
你好 Bernd,谢谢,但这并没有给我任何关于我的问题的线索 你需要比较PHP版本和它的配置。尝试一个简单的任务,例如将 php-info 写入文件,然后比较每次调用的文件。 都是5.6.30 你比较过配置吗?尝试将 phpinfo 的信息保存到文件中并进行比较。 看来问题不是因为PHP版本之间的差异,而是因为命令永远不会返回true或false。 Heinz Schilling 的回答完美。以上是关于TYPO3 调度程序任务 - 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章