私は PHP スクリプトを持っていますが、これは Typo3 の拡張機能ではありません。ここで、このスクリプトから Typeo3 のキャッシュ全体を削除したいと思います。そんなことがあるものか?
5 に答える
- TYPO3 拡張機能cleartypo3cacheをインストールします
- cleartypo3cache をトリガーするツールとキーボード ショートカットを PhpStorm 4 で作成する
- リモート ホストにプッシュするときのパスワードなしの公開鍵認証による SSH アクセス。
拡張機能 " " をインストール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
Web サーバーが localhost にある場合、このシェル スクリプトは必要ないので幸運です。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 で「外部ツール」を作成する必要があります。
- PhpStorm-->設定-->外部ツール-->追加...に移動します
- ツールに名前とグループを付けます。たとえば、"Deployment" -> "Clear TYPO3 Cache" です。
- チェックボックス「コンソールを開く」と「メニュー - >検索結果」を無効にします
リモート ホストのシナリオ
次の行を「Programm:」に追加します。
$ProjectFileDir$/.idea/clear-typo3-cache.sh
ローカルホストのシナリオ
この行を「Program:」に追加します。
$PhpExecutable$
この行を「パラメーター:」に追加します。
$ProjectFileDir$/typo3/cli_dispatch.phpsh cleartypo3cache all
$PhpExecutable$ を使用するには、PhpStorm --> 設定 --> PHP で PHP インタープリターを構成する必要があります。または、 /usr/bin/php を使用することもできます
(ソース: t3node.com )
PhpStorm キーマップ 保存またはリモート ホストのアップロードに使用するのと同じキー バインドを使用することをお勧めします。
PhpStorm-->設定-->キーマップに移動します
リモート ホスト シナリオの場合は、[メイン メニュー] --> [ツール] --> [展開] --> [既定のサーバーにアップロード] に移動します。既存のショートカットに注意してください。そのためのものがない場合は、新しいものを作成します (私は ALT + SHIFT + U を使用します)。
- 次に、作成した外部ツールに移動します (例: 外部ツール-->展開->TYPO3 キャッシュのクリア)。
- 「キーボードショートカットを追加」を右クリック
- 「First Stroke」で特定のショートカットを作成します
PhpStorm は、ショートカットが別のコマンドで既に使用されていることを警告します。それは結構です、それはまさに私たちが持ちたいものです。
それでおしまい。キーボードで保存またはアップロードを押すと、TYPO3 キャッシュは常にクリアされます。
t3nodeから適応
私は自分で解決策を見つけましたが、実際には非常に簡単です。t3libフォルダーにあるclass.t3lib_tcemain.phpを調べました。キャッシュをクリアするために必要なコマンドがあります。また、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);
}
?>
TYPO3 >= 7
TYPO3 7 以降では、Helmut Hummels 拡張機能の Typo3_console をインストールできます。次に、次のようにキャッシュをクリアできます (composer インストールの場合):
./vendor/bin/typo3cms cache:flush
https://extensions.typo3.org/extension/typo3_console/
https://github.com/TYPO3-Console/TYPO3-Console
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 は整数 (単一ページの場合) または整数の配列 (複数ページの場合) です。
4.5以降のTYPO3では(私が思うに)静的メソッドなので、呼び出すだけです
Tx_Extbase_Utility_Cache::clearPageCache($pids);
あなたのコントローラーで。
FLOW3では、TYPO3 v.4.xで知っている限り、そのようなことを行う可能性があります.そのようなデフォルトのCLIオプションはありません.
また、あなたの dB のキャッシュ テーブルを消去するための bash スクリプトを作成しました: https://gist.github.com/fedir/5162747