我有一个PHP脚本,它不是Typo3的扩展。现在我想从这个脚本中删除整个Typo3的Cache。怎么可能?
答案 0 :(得分:7)
安装扩展程序“cleartypo3cache
”并创建BE用户“_cli_cleartypo3cache
”并添加以下TSconfig:
options.clearCache.all=1
options.clearCache.pages=1
现在测试是否清除缓存:
$ cd /path/tp/typo3-site/
$ php typo3/cli_dispatch.phpsh cleartypo3cache all
如果您的网络服务器位于localhost上,那么您很幸运,因为您不需要此shell脚本。如果您的Web服务器位于远程主机上,则需要一个额外的包装器脚本。这是因为PhpStorm不为远程主机目录提供环境变量。您必须在包装器脚本中为每个项目静态设置此目录:
#!/bin/sh
TYPO3_SITE_PATH="/path/to/typo3-site"
USER="alice"
HOST="example.com"
/usr/bin/ssh $USER@$HOST '/usr/bin/php $TYPO3_SITE_PATH/typo3/cli_dispatch.phpsh cleartypo3cache all'
将您的项目文件目录中的此文件保存到.idea / clear-typo3-cache.sh并使其可执行:
$ chmod 755 .idea/clear-typo3-cache.sh
PhpStorm外部工具 您需要在PhpStorm中创建一个“外部工具”才能清除缓存。
远程主机方案
将以下行添加到“Programm:”
$ProjectFileDir$/.idea/clear-typo3-cache.sh
Localhost场景
将此行添加到“Program:”
$PhpExecutable$
将此行添加到“参数:”
$ProjectFileDir$/typo3/cli_dispatch.phpsh cleartypo3cache all
您需要在PhpStorm中配置PHP解释器 - >设置 - > PHP使用$ PhpExecutable $。或者你可以使用/ usr / bin / php http://www.t3node.com/fileadmin/user_upload/images/phpstorm-external-tools-typo3-cache.png
PhpStorm Keymap 我建议您使用与保存或远程主机上传相同的密钥绑定:
转到PhpStorm - >设置 - >键映射
对于远程主机方案,请导航至:主菜单 - >工具 - >部署 - >上传到默认服务器。注意现有的快捷方式。如果您没有,请创建一个新的(我使用ALT + SHIFT + U) 对于localhost方案,只需使用Ctrl + S(主菜单 - >文件 - >全部保存)。
现在,PhpStorm将警告您该快捷方式已用于其他命令。这没关系,这正是我们想要的。
就是这样。当您点击保存或上传到键盘上时,您的TYPO3缓存始终会被清除。
改编自t3node
答案 1 :(得分:4)
我自己找到了解决方案,实际上非常简单。我查看了 t3lib 文件夹中的 class.t3lib_tcemain.php 。你有清除缓存的必要命令。如果您启用了缓存框架,它还会检查。如果是这样,您还需要截断其他几个表(以 cachingframework_cache _ 开头)
基本上是:
<?php
require_once('./typo3conf/localconf.php');
$conn = mysql_connect($typo_db_host, $typo_db_username, $typo_db_password);
mysql_select_db($typo_db);
// Clear Cache here
mysql_query("TRUNCATE cache_treelist;");
mysql_query("TRUNCATE cache_pagesection;");
mysql_query("TRUNCATE cache_hash;");
mysql_query("TRUNCATE cache_pages;");
if($handle = opendir('./typo3conf')) {
while (false !== ($file = readdir($handle))) {
if(strpos($file, 'temp_CACHED_')!==false) {
unlink('./typo3conf/'.$file);
}
}
closedir($handle);
}
?>
答案 2 :(得分:2)
TYPO3 6.x
首先在您的班级中初始化服务
/**
* @var Tx_Extbase_Service_CacheService
*/
protected $cacheService;
/**
* @param Tx_Extbase_Service_CacheService $cacheService
* @return void
*/
public function injectCacheService(Tx_Extbase_Service_CacheService $cacheService) {
$this->cacheService = $cacheService;
}
在您的函数中只需调用
$this->cacheService->clearPageCache($pids);
而$ pids是整数(对于单页)或整数数组(多页)
在TYPO3中,4.5(我认为)它是一个静态方法,所以你只需要调用
Tx_Extbase_Utility_Cache::clearPageCache($pids);
在您的控制器中。
<强> 更新 强>
从TYPO3 7开始,您还可以安装Helmut Hummels Extension typo3_console。 然后你可以清除缓存:
typo3cms cache:flush
答案 3 :(得分:1)
在FLOW3中有可能做这样的事情,据我所知TYPO3 v.4.x你没有这样的默认CLI选项,所以你应该使用或你自己的脚本,或使用 cleartypo3cache 或 Cli Cleaner 。
我还制作了一个bash脚本来清理你的dB的缓存表:https://gist.github.com/fedir/5162747
答案 4 :(得分:0)
在typo3 6.x extbase中很简单。
编辑: clearPageCache不是静态的,那么你需要创建CacheService的对象
TYPO3 \ CMS \ Extbase \服务\ CacheService :: clearPageCache(pageUid);
答案 5 :(得分:0)
删除所有缓存形式TYPO3,
您必须TRUNCATE包含缓存数据的数据库表。他们是 : cache_treelist cache_pagesection cache_hash cache_pages
然后你还必须清空错误的&#39; typo3temp&#39;从TYPO3清除主缓存的文件夹。 为此,您可以使用以下链接中给出的外部脚本。
http://typo3techie.blogspot.in/2014/05/cleartemp-clear-typo3temp-for-removing.html