web-dev-qa-db-ja.com

Laravel 5 - 共有ホスティングサーバーのキャッシュをクリアする

問題はかなり明白です。

php artisan cache:clear

CLIで使用している上記のようにキャッシュをクリアするための回避策はありますか。私は一般的な共有ホスティングサービスを使用していますが、私の計画によれば、私はコントロールパネルにアクセスできません。

**ビューのキャッシュをクリアしたい**

質問 これとほぼ同じですが、役に立ちません。

前もって感謝します。

100
Rinto George

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もそうしません。

あなたが本当にビューキャッシュをクリアしたいのなら、私はあなたがあなた自身のartisanname__コマンドを書いて前に述べたようにそれを呼ぶ必要があると思います、あるいは完全にartisanname__パスをスキップしてルート。

しかし、私の本当の質問は あなたは本当にビューキャッシュをクリアする必要があります ?現在取り組んでいるプロジェクトでは、キャッシュされたビューはほぼ100個あり、それらのビューの重みは1 Mb未満ですが、私のvendorname__ディレクトリは40 Mb以上です。私はビューキャッシュがディスク使用量の本当のボトルネックであるとは思わないし、それをクリアすることが本当に必要ではありませんでした。

アプリケーションキャッシュについては、storage/framework/cacheディレクトリに格納されていますが、config/cache.phpfilename__ドライバを構成した場合のみです。ファイルベースのキャッシュよりもパフォーマンスを向上させるために、RedisMemcachedなど、さまざまなドライバを選択できます。

122
Marco Pallante

私が見ることができるように: http://itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html

新しいclear cacheコマンドで以下のコードを使用することは可能ですか?

//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>';
});

特に本番環境では、キャッシュを全員にクリアする可能性を与える必要はないので、その経路をコメントし、必要に応じてコードのコメントを外して経路を実行することをお勧めします。

39
Francesco

これが誰かに役立つことを願っています

laravelFolder/bootstrap/cacheに行き、config.phpの名前をあなたが望むものに変更してください。 config.php_oldしてあなたのサイトをリロードしてください。それはブードゥー教のように動作するはずです。

ハッピーコーディング...

36
The Dead Guy

設定のキャッシング laravelの設定は何十ものファイルにまたがっています、そしてそれぞれのリクエストに対してincluding一つ一つはコストのかかるプロセスです。すべての設定ファイルを1つにまとめるには、次のようにします。

php artisan config:cache

設定を変更しても、キャッシュした後は効果がありません。設定キャッシュを更新するには、上記のコマンドをもう一度実行します。設定キャッシュを完全に削除したい場合は、次のコマンドを実行してください。

php artisan config:clear

ルートキャッシング ルーティングは、コストのかかるタスクでもあります。 routes.phpファイルをキャッシュするには、以下のコマンドを実行します。

php artisan route:cache

クロージャーでは機能しないことに注意してください。クロージャーを使用している場合は、適切なコントローラーメソッドではなくクロージャーにバインドされているルートをコンパイルしようとするとartisanコマンドが例外をスローするため、これをコントローラーに移動する絶好の機会です。設定キャッシュと同様に、routes.phpを変更しても効果はありません。キャッシュを更新するには、routesファイルを変更するたびに上記のコマンドを実行します。ルートキャッシュを完全に取り除くには、下記のコマンドを実行してください。

php artisan route:clear

クラスマップの最適化

中規模のプロジェクトが何百ものPHPファイルにまたがることは珍しくありません。良いコーディングの振る舞いが私たちを決定づけるので、すべてがそれ自身のファイルを持っています。もちろん、これには欠点がありません。 Laravelはリクエストごとに何十もの異なるファイルを含める必要がありますが、これはコストのかかる作業です。

したがって、最適な最適化方法は、すべての要求に使用するファイルを宣言し(これは、たとえば、すべてのサービスプロバイダ、ミドルウェアなど)、1つのファイルにまとめて、後で要求ごとにロードされるようにすることです。これは、すべてのJavaScriptファイルを1つにまとめることと変わらないので、ブラウザはサーバーへのリクエストを減らす必要があります。

追加のコンパイルファイル(やはりサービスプロバイダ、ミドルウェアなど)は、ファイルキーのconfig/compile.phpであなたが宣言するべきです。アプリに対するすべてのリクエストに不可欠なものがすべて揃ったら、それらを1つのファイルに連結します。

php artisan optimize --force

作曲家オートロードの最適化

これはlaravelのためだけではなく、composerを利用しているあらゆるアプリケーションのためのものです。

最初にPSR-4オートロードのしくみについて説明し、次にそれを最適化するために実行する必要があるコマンドを紹介します。作曲家がどのように機能するのか知りたくないのであれば、直接consoleコマンドにジャンプすることをお勧めします。

App\Controllers\AuthControllerクラスを作曲者に要求すると、まずクラスマップで直接の関連付けを検索します。クラスマップは、クラスとファイルの1対1の関連付けを持つ配列です。もちろん、Loginクラスとそれに関連するファイルを手動でクラスマップに追加しなかったので、composerは先に進み名前空間を検索します。 AppはデフォルトでLaravelが付いていてapp/フォルダに関連付けられているPSR-4名前空間であるため、composerは基本的な文字列操作手順でPSR-4クラス名をファイル名に変換します。結局、App\Controllers\AuthControllerはAuthController.phpファイルの中になければならないと推測します。このファイルは幸いなことにControllers/の名前空間フォルダーの中にあるはずのapp/フォルダーの中にあります。

App\Controllers\AuthControllerクラスがapp/Controllers/AuthController.phpファイルに存在することを確認するためだけに、これは大変な作業です。作曲家にアプリケーション全体をスキャンさせ、クラスとファイルの1対1の関連付けを直接作成するには、次のコマンドを実行します。

composer dumpautoload -o

あなたがすでにphp artisan optimize --forceを実行していたならば、もうこれを実行する必要はないことを覚えておいてください。 optimizeコマンドはすでにcomposerに最適化されたオートロードを作成するように伝えます。

33
Maulik

このパッケージは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');
23
Afraz Ahmad

基本的にビューキャッシュをクリアしたいです。

そのためのLaravel 5.1にコマンドがあります

php artisan view:clear
16
Laurence

FTPで接続して、storage\framework\viewsの場合はlaravel 5フォルダー、app\storage\viewsの場合はlaravel 4フォルダーをクリアすることができます。

7
gandra404

CLI以外のすべてのキャッシュをクリアするには 、これを実行します。これは私のために働きます。

Route::get('/clear', function() {

   Artisan::call('cache:clear');
   Artisan::call('config:clear');
   Artisan::call('config:cache');
   Artisan::call('view:clear');

   return "Cleared!";

});
6
Amos Chihi
php artisan view:clear

キャッシュされたビューを消去します

3
Spidi

routes/web.phpファイルでLumenからLaravelを使用している場合は、これを実行できます。

use Illuminate\Support\Facades\Artisan;

$app->get('/clear-cache', function () {
    $code = Artisan::call('cache:clear');
    return 'cache cleared';
});
1
pableiros

Francescoの回答に似ていますが、ルーターの設定に混乱が少なく、ルーター経由でも可能です。

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 etcにアクセスして実行してください。有効なArtisanコマンドを追加/編集する必要がある場合は、$ validCommands配列を更新するだけです。

1
chemic

共有ホスティングでlaravelアプリを実行するという考えには全く反対ですが(このあたりは悪い考えです)、このパッケージはおそらくあなたの問題を解決するでしょう。それはあなたがWebからいくつかの職人コマンドを実行することを可能にするパッケージです。それは完全には程遠いですが、いくつかのユースケースのために働くことができます。

https://github.com/recca0120/laravel-terminal

0
Ben Yanke

Cache :: flush(); https://laravel.com/docs/5.7/cache#events クラスHandlerのこの作業はExceptionHandlerを拡張

0
Bilal Hamid

これも試してください

cli用

php職人クリア:キャッシュ

職人用コマンド

 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/
0
Devendra Dode

これは私のために働きました。プロジェクトで、storage> framework> viewsに移動します。そこにあるすべてのファイルを削除してページを更新してください。

0
rogramatic

このページを何度か使用してクイックコマンドを作曲家にコピー&ペーストしたので、これらのコマンドを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フォルダに配置する

それから作曲家php artisan traqza:clear-everythingでコマンドを実行してください

ハッピーコーディング.

Github - > https://github.com/Traqza/clear-everything

0
Kray