我有一个PHP脚本,它不是Typo3的扩展.现在我想从这个脚本中删除整个Typo3的Cache.怎么可能?
安装Extension" cleartypo3cache"并创建BE用户" _cli_cleartypo3cache"并添加以下TSconfig:
options.clearCache.all=1
options.clearCache.pages=1
Run Code Online (Sandbox Code Playgroud)
现在测试缓存是否被清除:
$ cd /path/tp/typo3-site/
$ php typo3/cli_dispatch.phpsh cleartypo3cache all
Run Code Online (Sandbox Code Playgroud)
如果您的网络服务器位于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'
Run Code Online (Sandbox Code Playgroud)
将项目文件目录中的此文件保存到.idea/clear-typo3-cache.sh并使其可执行:
$ chmod 755 .idea/clear-typo3-cache.sh
Run Code Online (Sandbox Code Playgroud)
PhpStorm外部工具 您需要在PhpStorm中创建一个"外部工具"才能清除缓存.
远程主机方案
将以下行添加到"Programm:"
$ProjectFileDir$/.idea/clear-typo3-cache.sh
Run Code Online (Sandbox Code Playgroud)
Localhost方案
将此行添加到"Program:"
$PhpExecutable$
Run Code Online (Sandbox Code Playgroud)
将此行添加到"参数:"
$ProjectFileDir$/typo3/cli_dispatch.phpsh cleartypo3cache all
Run Code Online (Sandbox Code Playgroud)
您需要在PhpStorm - > Settings - > 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
我自己找到了解决方案,而且实际上很容易。我接过来一看进入class.t3lib_tcemain.php在t3lib文件夹中。那里有必要的命令来清除缓存。它还会检查您是否启用了cachingframework。如果是这样,您还需要截断其他一些表(以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);
}
?>
Run Code Online (Sandbox Code Playgroud)