Я использую TYPO3 9.5.14 и импортирую Новости из внешней базы данных. После импорта я хочу очистить кеш страницы, на которой отображаются новости.
Я использую бэкэнд кэширования apcu, поэтому я не использую стандартный бэкэнд кэширования базы данных TYPO3. Я создал задачу планировщика для импорта новостей, и вот проблема:
Когда я вызываю задачу планировщика через модуль backend, тогда все в порядке. Новости импортируются, а кеш страниц очищается. Но когда cronjob вызывает задачу планировщика через cli, новости импортируются, но кэш страницы не очищается. Чего мне не хватает?
Вот класс задач планировщика:
class NewsUpdateTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask
{
public function execute()
{
//some code that does the import...
$cacheManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class);
$cacheManager->flushCachesInGroupByTags('pages', ['pageId_2']);
return true;
}
}
Конфигурация бэкэнда кэширования apcu включена в AdditionalConfiguration. php, например:
include_once "MwCachingConfiguration.php";
и выглядит так:
<?php
if (!function_exists('mw_setCacheBackend')) {
function mw_setCacheBackend($backendClassName, $cacheName, $lifetime = NULL)
{
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['backend'] = $backendClassName;
if (isset($lifetime))
{
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['options'] = array("defaultLifetime" => $lifetime);
} else {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['options'] = array();
}
}
}
$mw_apcExtensionLoaded = extension_loaded('apc');
$mw_apcuExtensionLoaded = extension_loaded('apcu');
$mw_apcAvailable = $mw_apcExtensionLoaded || $mw_apcuExtensionLoaded;
$mw_apcEnabled = ini_get('apc.enabled') == TRUE;
if (PHP_SAPI !== 'cli' && TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext() !== 'Development' && $mw_apcAvailable && $mw_apcEnabled) {
$mw_backendClassName = $mw_apcExtensionLoaded ? 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend'
: 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcuBackend';
} else {
$mw_backendClassName = 'TYPO3\\CMS\\Core\\Cache\\Backend\\FileBackend';
}
$version = TYPO3_version;
if (substr($version,0,2) === "10")
{
mw_setCacheBackend($mw_backendClassName, 'hash');
mw_setCacheBackend($mw_backendClassName, 'pages');
mw_setCacheBackend($mw_backendClassName, 'pagesection', 2592000);
mw_setCacheBackend($mw_backendClassName, 'rootline',2592000);
mw_setCacheBackend($mw_backendClassName, 'imagesizes', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase', 0);
} elseif ($version[0] === "9") {
mw_setCacheBackend($mw_backendClassName, 'cache_hash');
mw_setCacheBackend($mw_backendClassName, 'cache_pages');
mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap', 0);
} elseif ($version[0] === "8" || $version[0] === "6") {
mw_setCacheBackend($mw_backendClassName, 'cache_hash');
mw_setCacheBackend($mw_backendClassName, 'cache_pages');
mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap');
mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_object', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
} elseif ($version[0] === "7") {
mw_setCacheBackend($mw_backendClassName, 'cache_hash');
mw_setCacheBackend($mw_backendClassName, 'cache_pages');
mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap');
mw_setCacheBackend($mw_backendClassName, 'extbase_typo3dbbackend_queries');
mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_object', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
} else {
mw_setCacheBackend($mw_backendClassName, 'cache_hash');
mw_setCacheBackend($mw_backendClassName, 'cache_pages');
mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap', 0);
}