Фреймворк Laravel 5 - очистить кэш на хостинге


вопрос довольно ясен.

php artisan cache:clear

есть ли какая-либо работа вокруг, чтобы очистить кэш, как Выше мы используем в CLI. Я использую известный общий хостинг, но в соответствии с моим планом у меня нет доступа к панели управления.

в основном я хочу очистить кэш представлений.

Я видел вопрос почти такой же как этот, но это не помогает мне.

спасибо заранее.

12 83

12 ответов:

вы можете вызвать команду ремесленника за пределами CLI.

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 Мб, в то время как мой vendor каталог > 40 Мб. Я не думаю, что просмотр кэша является реальным узким местом в использовании диска и никогда не было реальной необходимости, чтобы очистить его.

Что касается кэш приложения, хранится в

Как я вижу: 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>';
});

Не обязательно давать возможность очистить кэши всем, особенно в производственной среде, поэтому я предлагаю комментировать эти маршруты и, когда это необходимо, де-комментировать код и запускать маршруты.

конфигурация кэширования Конфигурация laravel распространяется на десятки файлов, и including каждый из них для каждого запроса является дорогостоящим процессом. Чтобы объединить все ваши конфигурационные файлы в один, использовать:

php artisan config:cache

имейте в виду, что любые изменения в конфиге не будет иметь никакого эффекта после кэширования. Чтобы обновить кэш конфигурации, выполните приведенную выше команду еще раз. Если вы хотите полностью избавиться от кэша конфигурации, запустите

php artisan config:clear

маршруты кэширование Маршрутизация также является дорогостоящей задачей в laravel. Для кэширования маршрутов.php-файл выполните следующую команду:

php artisan route:cache

имейте в виду, что он не работает с закрытиями. В случае, если вы используете замыкания, это отличный шанс переместить их в контроллер, так как команда artisan выдаст исключение при попытке скомпилировать маршруты, которые привязаны к замыканиям, а не к соответствующим методам контроллера. В том же, что и в кэше конфигурации, любые изменения маршрутов.PHP не будет иметь никакого эффекта больше. Чтобы обновить кэш, выполните приведенную выше команду каждый раз, когда вы вносите изменения в файл маршрутов. Чтобы полностью избавиться от кэша маршрутов, выполните следующую команду:

php artisan route:clear

оптимизация Classmap

это не редкость для среднего проекта, который будет распространяться на сотни файлов PHP. Поскольку хорошее поведение кодирования диктует нам, у всего есть свой собственный файл. Это, конечно, не обходится без недостатков. Laravel должен включать в себя десятки разные файлы для каждого запроса,что является дорогостоящей вещью.

следовательно, хорошим методом оптимизации является объявление, какие файлы используются для каждого запроса (это, например, все ваши поставщики услуг, middlewares и еще несколько) и объединение их только в один файл, который впоследствии будет загружен для каждого запроса. Это не отличается от объединения всех ваших файлов javascript в один, поэтому браузеру придется делать меньше запросов к серверу.

в дополнительные компилируемые файлы (опять же: поставщики услуг, промежуточные программы и т. д.) должны быть объявлены вами в config/compile.php, в ключе файлов. Как только вы поместите туда все необходимое для каждого запроса, сделанного в ваше приложение, объедините их в один файл с помощью:

php artisan optimize --force

оптимизация автоматической загрузки композитора

это не только для laravel, но и для любого приложения, которое использует composer.

я объясню сначала, как PSR-4 autoload работает, а затем я покажу вам, какую команду вы должны запустить, чтобы оптимизировать его. Если вам не интересно знать, как работает composer, я рекомендую вам перейти непосредственно к консольной команде.

когда вы просите композитора для App\Controllers\AuthController класс, он сначала ищет прямую ассоциацию в classmap. Classmap-это массив с 1-к-1 ассоциациями классов и файлов. Поскольку, конечно же, вы не добавили вручную класс Login и связанный с ним файл в classmap, композитор будет двигаться дальше и искать в пространствах имен. Потому что приложение-это пространство имен PSR-4, которое по умолчанию поставляется с Laravel и связано с app/ папка, композитор попытается преобразовать имя класса PSR-4 в имя файла с помощью основных процедур обработки строк. В конце концов, он догадывается, что App\Controllers\AuthController должен быть расположен в AuthController.php-файл, который находится в Controllers/ папка, которая, к счастью, должна быть в папке пространства имен, которая app/.

вся эта тяжелая работа только чтобы получить что App\Controllers\AuthController класс существует в . Чтобы composer сканировал все ваше приложение и создавал прямые ассоциации классов и файлов 1-к-1, выполните следующую команду:

composer dumpautoload -o

имейте в виду, что если вы уже запустили php artisan optimize --force, вам больше не нужно запускать этот. Поскольку оптимизировать команду, уже говорит композитор, чтобы создать оптимизирована Автозагрузка.

надеюсь, это кому-то поможет

на laravelFolder/bootstrap/cache переименовать config.php все, что вы хотите, например. config.php_old и перезагрузите свой сайт. Это должно работать как вуду.

Удачи В Кодировании...

в основном я хочу очистить кэш представлений.

теперь есть команда в Laravel 5.1 для этого

php artisan view:clear

этот пакет предназначен для 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');

вы можете подключиться через FTP и очистить на laravel 5 или app\storage\views на laravel 4.

вы можете сделать это, если вы используете Lumen С Laravel на routes/web.php file:

use Illuminate\Support\Facades\Artisan;

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

вы также можете сделать это через маршрутизатор, подобно Francesco answer, но с меньшим количеством помех в конфигурации маршрутизатора

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.

хотя я категорически не согласен с идеей запуска приложения laravel на общем хостинге (плохая идея), этот пакет, вероятно, решит вашу проблему. Это пакет, который позволяет запускать некоторые команды artisan из интернета. Это далеко не идеально, но может работать для некоторых usecases.

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

Это работает для меня. В вашем проекте перейдите в раздел: Хранилище > структура > представления. Удалите все файлы и обновите страницу.

php artisan view:clear

очистить кэшированные представления