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

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

php artisan cache:clear

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

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

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

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

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

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


Как я вижу: 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 должен включать десятки разные файлы для каждого запроса,что является дорогостоящей вещью.

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

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

php artisan optimize --force

оптимизация загрузки композитора

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

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

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

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

composer dumpautoload -o

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


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

на 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

и он будет работать следующие команды automcatically

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 на :

use Illuminate\Support\Facades\Artisan;

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

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

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

затем запустите их через visiting http://myapp.тест / ремесленник / кэш-clear etc Если вам нужно добавить / изменить допустимые команды Artisan, просто обновите массив $validCommands.


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

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


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


php artisan view:clear

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