it-swarm.com.de

Laravel 5 - Cache in Shared Hosting Server löschen

Die Frage ist ziemlich klar.

php artisan cache:clear

Gibt es eine Problemumgehung, um den Cache wie oben beschrieben zu löschen, den wir in der CLI verwenden. Ich verwende einen beliebten Shared-Hosting-Dienst, aber gemäß meinem Plan habe ich keinen Zugriff auf das Kontrollfeld.

** Ich möchte den Ansichtencache löschen. **

Ich habe eine Frage gesehen fast das gleiche wie das, aber es hilft mir nicht weiter.

Danke im Voraus.

93
Rinto George

Sie können einen Artisan-Befehl außerhalb der CLI aufrufen.

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    // return what you want
});

Das offizielle Dokument finden Sie hier http://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli


Update

Es ist nicht möglich, den Ansichts-Cache zu löschen. Weder php artisan cache:clear tut das.

Wenn Sie den Ansichtscache wirklich löschen möchten, müssen Sie, wie ich bereits sagte, Ihren eigenen artisan-Befehl schreiben und ihn aufrufen, oder den artisan-Pfad vollständig überspringen und den Ansichtscache in einer Klasse löschen, die Sie von einem Controller oder einem Controller aus aufrufen Route.

Aber meine eigentliche Frage ist Müssen Sie wirklich den Ansichts-Cache löschen? In einem Projekt, an dem ich gerade arbeite, habe ich fast 100 zwischengespeicherte Ansichten, deren Gewicht weniger als 1 MB beträgt, während mein Verzeichnis vendor> 40 MB ist. Ich glaube nicht, dass der Ansichts-Cache ein echter Engpass bei der Festplattennutzung ist und es nie nötig hatte, ihn zu löschen.

Der Anwendungscache wird im Verzeichnis storage/framework/cache gespeichert, jedoch nur, wenn Sie den Treiber file in config/cache.php konfiguriert haben. Sie können viele verschiedene Treiber auswählen, beispielsweise Redis oder Memcached, um die Leistung eines dateibasierten Caches zu verbessern.

112
Marco Pallante

Wie ich sehen kann: http://itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html

ist es möglich, den folgenden Code mit den neuen Clear-Cache-Befehlen zu verwenden:

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

Es ist nicht notwendig, die Möglichkeit zu geben, die Caches für alle zu löschen, insbesondere in einer Produktionsumgebung. Ich schlage vor, die Routen zu kommentieren und, wenn es erforderlich ist, den Code zu dekomprimieren und die Routen auszuführen.

39
Francesco

Ich hoffe das hilft jemandem

Gehen Sie zu laravelFolder/bootstrap/cache und benennen Sie config.php so um, wie Sie möchten. config.php_old und laden Sie Ihre Site neu. Das sollte wie Voodoo funktionieren.

Happy Coding ...

33
The Dead Guy

Config-Caching Die Laravel-Konfiguration erstreckt sich über Dutzende von Dateien, und including jede von ihnen für jede Anforderung ist ein kostspieliger Prozess. Verwenden Sie zum Kombinieren aller Konfigurationsdateien Folgendes:

php artisan config:cache

Beachten Sie, dass Änderungen an der Konfiguration keine Auswirkungen haben, sobald Sie sie im Cache gespeichert haben. Führen Sie den obigen Befehl erneut aus, um den Konfigurationscache zu aktualisieren. Wenn Sie den Config-Cache vollständig löschen möchten, führen Sie den Befehl aus

php artisan config:clear

Routes caching Routing ist in Laravel auch eine teure Aufgabe. Führen Sie den folgenden Befehl aus, um die Datei routes.php zwischenzuspeichern:

php artisan route:cache

Beachten Sie, dass es nicht mit Verschlüssen funktioniert. Falls Sie Closures verwenden, ist dies eine große Chance, sie in einen Controller zu verschieben, da der handwerkliche Befehl eine Ausnahme auslöst, wenn Sie versuchen, Routen zu kompilieren, die an Closures gebunden sind, anstelle der richtigen Controller-Methoden ..__ Im Konfigurationscache haben Änderungen an der Datei routes.php keine Auswirkungen mehr. Führen Sie den obigen Befehl jedes Mal aus, wenn Sie die Routendatei ändern, um den Cache zu aktualisieren. Führen Sie den folgenden Befehl aus, um den Routen-Cache vollständig zu entfernen:

php artisan route:clear

Classmap-Optimierung

Es ist nicht ungewöhnlich, dass ein mittelgroßes Projekt auf Hunderte von PHP -Dateien verteilt ist. Da gutes Codierverhalten uns vorschreibt, hat alles eine eigene Datei. Dies ist natürlich nicht ohne Nachteile. Laravel muss Dutzende verschiedener Dateien für jede Anfrage hinzufügen, was sehr kostspielig ist.

Daher ist es eine gute Optimierungsmethode, zu deklarieren, welche Dateien für jede Anforderung verwendet werden (dies sind beispielsweise alle Ihre Diensteanbieter, Middlewares und einige andere) und diese in einer einzigen Datei zusammengefasst, die anschließend für jede Anforderung geladen wird. Dies unterscheidet sich nicht von der Kombination aller Javascript-Dateien in einer einzigen, sodass der Browser weniger Anforderungen an den Server stellen muss.

Die zusätzlichen Kompilierdateien (wiederum: Dienstanbieter, Middlewares usw.) sollten von Ihnen in config/compile.php im Dateischlüssel deklariert werden. Wenn Sie alles Wesentliche für jede Anfrage an Ihre App eingegeben haben, verketten Sie sie in einer Datei mit:

php artisan optimize --force

Autoload des Komponisten optimieren

Dies ist nicht nur für Laravel, sondern für jede Anwendung, die Composer verwendet.

Ich erkläre zuerst, wie das automatische Laden des PSR-4 funktioniert, und dann zeige ich Ihnen, welchen Befehl Sie ausführen sollten, um ihn zu optimieren. Wenn Sie nicht wissen möchten, wie Composer funktioniert, sollten Sie direkt zum Konsolenbefehl springen.

Wenn Sie den Composer nach der Klasse App\Controllers\AuthController fragen, sucht diese zunächst nach einer direkten Zuordnung in der Klassenzuordnung. Die Classmap ist ein Array mit 1: 1-Zuordnungen von Klassen und Dateien. Da Sie natürlich die Login-Klasse und die zugehörige Datei nicht manuell zur Classmap hinzugefügt haben, wird Composer in den Namespaces weitergehen und suchen. Da App ein PSR-4-Namespace ist, der standardmäßig mit Laravel und Es wird dem Ordner app/ zugeordnet. Composer versucht, den Namen der PSR-4-Klasse in einen Dateinamen zu konvertieren, wobei grundlegende Prozeduren zur Bearbeitung von Strings verwendet werden. Am Ende wird vermutet, dass App\Controllers\AuthController sich in einer AuthController.php-Datei befinden muss, die sich in einem Controllers/-Ordner befindet, der sich glücklicherweise im Namespace-Ordner befinden sollte, nämlich app/.

All diese harte Arbeit, nur um zu erhalten, dass die App\Controllers\AuthController Klasse in der app/Controllers/AuthController.php Datei vorhanden ist. Führen Sie den folgenden Befehl aus, damit Composer Ihre gesamte Anwendung scannen und direkte 1-zu-1-Verknüpfungen von Klassen und Dateien erstellen kann:

composer dumpautoload -o

Beachten Sie, dass Sie, wenn Sie php artisan Optimize --force bereits ausgeführt haben, diese nicht mehr ausführen müssen. Da der Befehl zum Optimieren bereits den Composer anweist, ein optimiertes Autoload zu erstellen.

33
Maulik

Dieses Paket ist für PHP ^ 7.0 und ^ laravel5.5 .

Verwenden Sie dieses Paket in cronjob , das ich nur für diesen Zweck erstellt habe. Ich war auch mit derselben Situation konfrontiert. https://packagist.org/packages/afrazahmad/clear-cached-data Installiere es und starte:

php artisan clear:data

die folgenden Befehle werden automatisch ausgeführt

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache

Ich hoffe es hilft.

Wenn Sie es zu einer bestimmten Zeit automatisch ausführen möchten, müssen Sie zuerst crnjob einrichten. z.B.

 in app/console/kernel.php

In der Zeitplanfunktion:

$schedule->command('clear:data')->dailyAt('07:00');
24
Afraz Ahmad

Grundsätzlich möchte ich den Ansichten-Cache löschen.

In Laravel 5.1 gibt es jetzt einen Befehl dafür

php artisan view:clear
15
Laurence

Sie können sich über FTP verbinden und den storage\framework\views-Ordner für laravel 5 oder app\storage\views für laravel 4 löschen.

7
gandra404
php artisan view:clear

löscht die zwischengespeicherten Ansichten

3
Spidi

Alle Cache außerhalb der CLI löschen , Tun Sie dies; Das funktioniert für mich.

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

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

   return "Cleared!";

});
3
Amos Chihi

Dies ist möglich, wenn Sie Lumen aus Laravel in Ihrer routes/web.php-Datei verwenden:

use Illuminate\Support\Facades\Artisan;

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

Sie können dies auch über einen Router tun, ähnlich der Antwort von Francesco, jedoch mit weniger Unordnung in der Routerkonfiguration

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>";
    }
});

Dann führen Sie sie über visit http: //myapp.test/artisan/cache-clear etc .__ aus. Wenn Sie gültige Artisan-Befehle hinzufügen/bearbeiten müssen, aktualisieren Sie einfach das $ validCommands-Array.

1
chemic

Obwohl ich mit der Idee, eine Laravel-App für Shared Hosting auszuführen (keine schlechte Idee), absolut nicht zustimmen kann, würde dieses Paket wahrscheinlich Ihr Problem lösen. Mit diesem Paket können Sie einige handwerkliche Befehle aus dem Web ausführen. Es ist alles andere als perfekt, kann aber für einige Anwendungsfälle funktionieren.

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

0
Ben Yanke

Cache :: flush (); https://laravel.com/docs/5.7/cache#events Diese Arbeit in der Klasse Handler erweitert ExceptionHandler

0
Bilal Hamid

Versuchen Sie das auch

für cli 

pHP Handwerker löschen: Cache

für den handwerklichen Befehl 

 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

Das hat bei mir funktioniert. In Ihrem Projekt gehen Sie zu: Speicher> Framework> Ansichten. Löschen Sie alle Dateien dort und aktualisieren Sie Ihre Seite.

0
rogramatic

Ich habe diese Seite einige Male zum Kopieren und Einfügen von Schnellbefehlen in Composer verwendet. Ich habe einen Befehl geschrieben, der diese Befehle in einem einzigen Handwerkerbefehl ausführt.

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 . '');

        }
    }
}

In app\Console\Commands\Admin Ordner ablegen

führen Sie dann den Befehl in Composer php artisan traqza:clear-everything aus.

Glückliche Kodierung.

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

0
Kray