質問はかなり明確です。
php artisan cache:clear
CLIで使用する上記のようなキャッシュをクリアする回避策はありますか?私は人気のある共有ホスティングサービスを使用していますが、私の計画では、コントロールパネルにアクセスできません。
**ビューのキャッシュをクリアしたい。**
私が見た質問このとほぼ同じ、それは私を助けていません。
質問はかなり明確です。
php artisan cache:clear
CLIで使用する上記のようなキャッシュをクリアする回避策はありますか?私は人気のある共有ホスティングサービスを使用していますが、私の計画では、コントロールパネルにアクセスできません。
**ビューのキャッシュをクリアしたい。**
私が見た質問このとほぼ同じ、それは私を助けていません。
回答:
CLIの外でArtisanコマンドを呼び出すことができます。
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
// return what you want
});
公式ドキュメントはこちら http://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli
更新
ビューキャッシュを削除する方法はありません。それもphp artisan cache:clear
しません。
ビューキャッシュを本当にクリアしたい場合は、独自のartisan
コマンドを記述して前述のように呼び出すか、artisan
パスを完全にスキップして、コントローラーまたはルートから呼び出すクラスのビューキャッシュをクリアする必要があると思います。
しかし、私の本当の質問は、本当にビューのキャッシュをクリアする必要があるのですか?私が現在取り組んでいるプロジェクトでは、ほぼ100のキャッシュされたビューがあり、それらの重みは1 Mb未満vendor
ですが、ディレクトリは> 40 Mbです。ビューキャッシュがディスク使用量の実際のボトルネックであるとは思いませんし、それをクリアする必要が実際にあったことはありません。
アプリケーションキャッシュについてはstorage/framework/cache
、にfile
ドライバを設定した場合にのみ、ディレクトリに格納されますconfig/cache.php
。RedisやMemcachedなど、さまざまなドライバーを選択して、ファイルベースのキャッシュのパフォーマンスを向上させることができます。
cache:clear
コマンドは、ファサードからアクセスされるアプリケーションキャッシュで機能しますCache
。
これが誰かに役立つことを願っています
移動してlaravelFolder/bootstrap/cache
、必要な名前に変更config.php
します。config.php_old
サイトをリロードします。これはブードゥー教のように機能するはずです。
ハッピーコーディング...
cache
フォルダーと.env
ファイル内のデフォルトのキャッシュ値を削除しました。しかし、このすべての問題を再び削除した後..ときphp artisan optimize
。最後に、これはconfig.phpファイルの名前を変更するのではなく、キー値を変更することで私の問題を解決しました。ありがとう@DeadGuy
私が見ることができるように:http : //itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html
新しいキャッシュ消去コマンドで以下のコードを使用することは可能ですか?
//Clear Cache facade value:
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
return '<h1>Cache facade value cleared</h1>';
});
//Reoptimized class loader:
Route::get('/optimize', function() {
$exitCode = Artisan::call('optimize');
return '<h1>Reoptimized class loader</h1>';
});
//Route cache:
Route::get('/route-cache', function() {
$exitCode = Artisan::call('route:cache');
return '<h1>Routes cached</h1>';
});
//Clear Route cache:
Route::get('/route-clear', function() {
$exitCode = Artisan::call('route:clear');
return '<h1>Route cache cleared</h1>';
});
//Clear View cache:
Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
return '<h1>View cache cleared</h1>';
});
//Clear Config cache:
Route::get('/config-cache', function() {
$exitCode = Artisan::call('config:cache');
return '<h1>Clear Config cleared</h1>';
});
特に本番環境では、すべての人にキャッシュをクリアする可能性を与える必要はないので、そのルートにコメントを付け、必要に応じてコードをコメント解除してルートを実行することをお勧めします。
構成のキャッシング
laravel 構成は数十のファイルに分散してincluding
おり、要求ごとにそれらすべてがコストのかかるプロセスです。すべての構成ファイルを1つに結合するには、以下を使用します。
php artisan config:cache
キャッシュにいったん設定を変更しても効果がないことに注意してください。設定キャッシュを更新するには、上記のコマンドを再度実行します。設定キャッシュを完全に取り除きたい場合は、
php artisan config:clear
ルートのキャッシング ルーティングもlaravelの負荷の高いタスクです。routes.phpファイルをキャッシュするには、次のコマンドを実行します。
php artisan route:cache
クロージャーでは機能しないことに注意してください。クロージャを使用している場合、適切なコントローラメソッドではなくクロージャにバインドされているルートをコンパイルしようとすると、artisanコマンドが例外をスローするため、クロージャをコントローラに移動する絶好のチャンスです。configキャッシュと同じように、routes.phpを変更しても効果はありません。キャッシュを更新するには、routesファイルを変更するたびに上記のコマンドを実行します。ルートキャッシュを完全に取り除くには、次のコマンドを実行します。
php artisan route:clear
クラスマップの最適化
中規模プロジェクトが数百のPHPファイルに分散することは珍しくありません。適切なコーディング動作が必要になるため、すべてに独自のファイルがあります。もちろん、これには欠点がないわけではありません。Laravelはリクエストごとに数十の異なるファイルを含める必要がありますが、これはコストがかかります。
したがって、適切な最適化方法は、すべての要求に使用されるファイル(これは、たとえば、すべてのサービスプロバイダー、ミドルウェアなど)を宣言し、それらを1つのファイルに結合して、後で各要求に対して読み込まれます。これは、すべてのJavaScriptファイルを1つにまとめることと同じなので、ブラウザーはサーバーへの要求を少なくする必要があります。
追加のコンパイルファイル(サービスプロバイダー、ミドルウェアなど)は、config / compile.phpのfilesキーで宣言する必要があります。アプリへのすべてのリクエストに不可欠なものをすべて配置したら、それらを1つのファイルに連結します。
php artisan optimize --force
コンポーザーの自動ロードの最適化
これは、laravelだけでなく、composerを使用するすべてのアプリケーション用です。
最初にPSR-4オートロードがどのように機能するかを説明し、次にそれを最適化するために実行する必要があるコマンドを示します。composerの動作を知りたくない場合は、直接consoleコマンドにジャンプすることをお勧めします。
composerにApp\Controllers\AuthController
クラスを要求すると、最初にクラスマップで直接関連付けが検索されます。クラスマップは、クラスとファイルの1対1の関連付けを持つ配列です。もちろん、手動でLoginクラスとその関連ファイルをクラスマップに追加しなかったので、composerは次に進み、名前空間を検索します。AppはデフォルトでLaravelに付属するPSR-4名前空間であり、app/
フォルダーに関連付けられているため、composerは基本的な文字列操作手順でPSR-4クラス名をファイル名に変換しようとします。App\Controllers\AuthController
結局のところ、それはAuthController.phpファイルに配置する必要があると推測します。このファイルControllers/
は、名前空間フォルダーにあるはずのフォルダーにありますapp/
。
このすべてのハードワークは、App\Controllers\AuthController
クラスがapp/Controllers/AuthController.php
ファイルに存在することを取得するためだけです。composerでアプリケーション全体をスキャンし、クラスとファイルの1対1の直接の関連付けを作成するには、次のコマンドを実行します。
composer dumpautoload -o
すでにphp artisan optimize --forceを実行している場合は、これを実行する必要がないことに注意してください。最適化コマンドはすでに最適化されたオートロードを作成するようcomposerに指示しているためです。
このパッケージは、php ^ 7.0および^ laravel5.5用です。
このパッケージは、私がこの目的でのみ作成したcronjobで使用します。私も同じ状況に直面していた。 https://packagist.org/packages/afrazahmad/clear-cached-data インストールして実行します。
php artisan clear:data
そして、次のコマンドを自動的に実行します
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
それが役に立てば幸い。
特定の時間に自動的に実行したい場合は、最初にcrnjobをセットアップする必要があります。例えば
in app/console/kernel.php
スケジュール機能:
$schedule->command('clear:data')->dailyAt('07:00');
CLIの外部ですべてのキャッシュをクリアするには、次のようにします。これは私にとってはうまくいきます。
Route::get('/clear', function() {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');
Artisan::call('view:clear');
return "Cleared!";
});
config:cache
構成をクリアしてキャッシュします-したがって、両方を追加する必要はないと思います
php artisan view:clear
キャッシュされたビューをクリアします
php artisan cache:clear
が求められます。これは、ストレージフォルダーに保存されている表示キャッシュをクリアしません。これはまさに必要なものです。
フランチェスコの回答と同様に、ルーターを介してそれを行うこともできますが、ルーター構成の煩雑さが軽減されます
Route::get('/artisan/{cmd}', function($cmd) {
$cmd = trim(str_replace("-",":", $cmd));
$validCommands = ['cache:clear', 'optimize', 'route:cache', 'route:clear', 'view:clear', 'config:cache'];
if (in_array($cmd, $validCommands)) {
Artisan::call($cmd);
return "<h1>Ran Artisan command: {$cmd}</h1>";
} else {
return "<h1>Not valid Artisan command</h1>";
}
});
次に、http://myapp.test/artisan/cache-clearなどにアクセスして実行します。有効なArtisanコマンドを追加/編集する必要がある場合は、$ validCommands配列を更新してください。
これも試してみてください
CLIの
php artisan clear:cache
職人コマンドを使用する
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
return 'Application cache cleared';
});
[ https://www.tutsmake.com/laravel-clear-cache-using-artisan-command-cli/][1]
[1]: https://www.tutsmake.com/laravel-clear-cache-using-artisan-command-cli/
このページを数回使用して、クイックコマンドをコピーしてコンポーザーに貼り付けたので、これらのコマンドを1つの職人コマンドで実行するコマンドを作成しました。
namespace App\Console\Commands\Admin;
use Illuminate\Console\Command;
class ClearEverything extends Command
{
protected $signature = 'traqza:clear-everything';
protected $description = 'Clears routes, config, cache, views, compiled, and caches config.';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$validCommands = array('route:clear', 'config:clear', 'cache:clear', 'view:clear', 'clear-compiled', 'config:cache');
foreach ($validCommands as $cmd) {
$this->call('' . $cmd . '');
}
}
}
中に配置しapp\Console\Commands\Admin
たフォルダ
次に、composerでコマンドを実行します php artisan traqza:clear-everything
ハッピーコーディング。
私は共有ホスティングでlaravelアプリを実行するという考え(全体的に悪い考え)には強く反対しますが、このパッケージで問題を解決できる可能性があります。これは、Webからいくつかの職人コマンドを実行できるようにするパッケージです。これは完璧とはほど遠いですが、いくつかのユースケースで機能します。
キャッシュ::フラッシュ(); https://laravel.com/docs/5.7/cache#events クラスHandlerでのこの作業は、ExceptionHandlerを拡張します
これに対するより効率的なアプローチは、共有サーバーの管理パネルのcronジョブモジュールを使用して、設定されたartisanコマンドを呼び出すlaravelスケジューラコマンドを実行することです。
* * * * * /usr/bin/php /var/www/web/artisan schedule:run /dev/null 2>&1
cronでスケジューラを設定すると、\ App \ Console \ Kernel.phpのスケジュールメソッドを編集して、次のような適切なartisanコマンドを呼び出すことができます。
$schedule->command('queue:work')->cron('* * * * *')->withoutOverlapping();
$schedule->command('route:cache')->cron('0 0 * * *')->withoutOverlapping();
コマンドを実行した後は、いつでも上の行を削除できます