如何从外部脚本清除Typo3中的缓存?

Kee*_*all 1 php caching typo3

我有一个PHP脚本,它不是Typo3的扩展.现在我想从这个脚本中删除整个Typo3的Cache.怎么可能?

Tam*_*ara 7

  1. 安装TYPO3 Extension cleartypo3cache
  2. 在PhpStorm 4中创建工具和键盘快捷键以触发cleartypo3cache
  3. 推送到远程主机时使用无密码pubkey身份验证进行SSH访问.

安装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中创建一个"外部工具"才能清除缓存.

  1. 转到PhpStorm - >设置 - >外部工具 - >添加...
  2. 为您的工具命名和组,例如"部署" - >"清除TYPO3缓存"
  3. 取消激活复选框"打开控制台"和"菜单 - >搜索结果"

远程主机方案

将以下行添加到"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(主菜单 - >文件 - >全部保存).

  1. 现在导航到您创建的外部工具(例如外部工具 - >部署 - >清除TYPO3缓存)
  2. 右键单击"添加键盘快捷键"
  3. 在"First Stroke"中创建特定的快捷方式

现在,PhpStorm将警告您该快捷方式已用于其他命令.没关系,这正是我们想要的.

而已.当您点击保存或上传到键盘上时,您的TYPO3缓存始终会被清除.

改编自t3node

  • 那是一个非常详细的答案,但必须有另一种方法,无需安装任何扩展程序之类的东西。例如在 Magento 中,您只需要包含 Mage-Loader,然后您就可以获得必要的方法。 (2认同)

Kee*_*all 5

我自己找到了解决方案,而且实际上很容易。我接过来一看进入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)