Laravel 5 - Очистить кеш на сервере общего хостинга
Вопрос довольно понятен.
php artisan cache:clear
Есть ли работа по очистке кеша, как мы использовали выше в CLI. Я пользуюсь известным сервисом виртуального хостинга, но, согласно моему плану, у меня нет доступа к панели управления.
В основном я хочу очистить кеш просмотров.
Я видел вопрос почти такой же, как этот, но это не помогает мне.
Заранее спасибо.
22 ответа
Вы можете вызвать команду Ремесленника за пределами CLI.
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
// return what you want
});
Вы можете проверить официальный документ здесь http://laravel.com/docs/5.0/artisan
Обновить
Нет способа удалить кеш представления. ни php artisan cache:clear
делает это
Если вы действительно хотите очистить кэш представления, я думаю, что вы должны написать свой собственный artisan
команда и вызовите его, как я уже говорил, или полностью пропустите artisan
путь и очистите кэш представления в некотором классе, который вы вызываете из контроллера или маршрута.
Но мой реальный вопрос - вам действительно нужно очистить кеш представления? В проекте, над которым я сейчас работаю, у меня есть почти 100 кэшированных представлений, и они весят менее 1 Мб, а мой vendor
каталог> 40 Мб. Я не думаю, что кэш представления является реальным узким местом в использовании диска, и никогда не было реальной необходимости его очищать.
Что касается кеша приложения, он хранится в storage/framework/cache
каталог, но только если вы настроили file
водитель в config/cache.php
, Вы можете выбрать много разных драйверов, таких как Redis или Memcached, чтобы улучшить производительность в файловом кеше.
Я надеюсь, что это помогает кому-то
Идти к laravelFolder/bootstrap/cache
затем переименуйте config.php
к чему угодно, например. config.php_old
и перезагрузите ваш сайт. Это должно работать как вуду.
Удачного кодирования...
Можно ли использовать приведенный ниже код с новыми командами очистки кэша:
//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. Для кеширования файла rout.php выполните следующую команду:
php artisan route:cache
Имейте в виду, что это не работает с замыканиями. В случае, если вы используете замыкания, это отличный шанс переместить их в контроллер, так как команда кустарного мастера выдает исключение при попытке компилировать маршруты, которые привязаны к замыканиям, вместо правильных методов контроллера. В том же порядке, что и кеш конфигурации, любые изменения в route.php больше не будут иметь никакого эффекта. Чтобы обновить кэш, запускайте указанную выше команду каждый раз, когда вносите изменения в файл маршрутов. Чтобы полностью избавиться от кэша маршрутов, выполните следующую команду:
php artisan route:clear
Оптимизация карты классов
Нередко проект среднего размера распространяется на сотни файлов PHP. Как говорит нам хорошее поведение при кодировании, у всего есть свой файл. Это, конечно, не обходится без недостатков. Laravel должен включать в себя десятки различных файлов для каждого запроса, что является дорогостоящим делом.
Следовательно, хорошим методом оптимизации является объявление, какие файлы используются для каждого запроса (это, например, все ваши поставщики услуг, промежуточное программное обеспечение и некоторые другие), и объединение их в один файл, который впоследствии будет загружен для каждого запроса. Это не отличается от объединения всех ваших файлов javascript в один, поэтому браузер должен будет делать меньше запросов к серверу.
Дополнительные файлы компиляции (опять же: поставщики услуг, промежуточное программное обеспечение и т. Д.) Должны быть объявлены вами в config/compile.php, в ключе files. После того, как вы поместите туда все необходимое для каждого запроса к вашему приложению, объедините их в один файл с:
php artisan optimize --force
Оптимизация автозагрузки композитора
Это не только для laravel, но и для любого приложения, использующего композитор.
Сначала я объясню, как работает автозагрузка PSR-4, а затем покажу, какую команду нужно выполнить, чтобы оптимизировать ее. Если вам не интересно знать, как работает композитор, я рекомендую перейти непосредственно к команде консоли.
Когда вы спрашиваете композитора для App\Controllers\AuthController
класс, он сначала ищет прямую связь в карте классов. Карта классов представляет собой массив с однозначными ассоциациями классов и файлов. Поскольку, конечно, вы не добавляли класс Login и связанный с ним файл вручную в карту классов, composer будет продолжать поиск в пространствах имен. Потому что App - это пространство имен PSR-4, которое по умолчанию поставляется с Laravel и связано с app/
folder, 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 уже говорит композитору создать оптимизированную автозагрузку.
Этот пакет предназначен для 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');
В основном я хочу очистить кеш просмотров.
Теперь в Laravel 5.1 есть команда для этого
php artisan view:clear
Эта команда очистит сразу все кеши. :
$ php artisan optimize:clear
Это псевдоним:
$ php artisan view:clear
$ php artisan config:clear
$ php artisan route:clear
$ php artisan cache:clear
$ php artisan clear-compiled
Чтобы очистить весь кэш вне CLI, сделайте это; Это работает для меня.
Route::get('/clear', function() {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');
Artisan::call('view:clear');
return "Cleared!";
});
Вы можете подключиться через FTP и очистить storage\framework\views
папка для laravel 5
или же app\storage\views
за laravel 4
,
Используйте приведенный ниже код с новыми командами очистки кеша: очистка кеша php artisan
//Clear route cache:
Route::get('/route-cache', function() {
$exitCode = Artisan::call('route:cache');
return 'Routes cache cleared';
});
//Clear config cache:
Route::get('/config-cache', function() {
$exitCode = Artisan::call('config:clear');
return 'Config cache cleared';
});
// Clear application cache:
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('cache:clear');
return 'Application cache cleared';
});
// Clear view cache:
Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
return 'View cache cleared';
});
Локальная машина
Запустите терминал корневого каталога вашего проекта.
На сервере хостинга
Сначала попробуйте получить доступ к терминалу от хостинг-провайдера. Тогда беги
php artisan config:cache
в корневом каталоге вашего проекта.
Если у вас нет доступа к терминалу, выполните этот трюк.
- перейти в этот каталог
project-folder/bootstrap/cache
- переименовать или удалить
config.php
файл
Примечание: избегайте удаления файла, это может создать проблемы в будущем, переименовав, вы можете изменить имя файла, поэтому я предлагаю переименовать имя файла.
Вы можете очистить кеш laravel программно
use Illuminate\Support\Facades\Cache;
Cache::flush();
cache()->flush();
Очистить кеш Удалите все файлы в папке кеша на вашем виртуальном хостинге
Laravel project->bootstarp->cache->delete all files
Вы можете сделать это, если вы используете Lumen
от Laravel
на ваше routes/web.php
файл:
use Illuminate\Support\Facades\Artisan;
$app->get('/clear-cache', function () {
$code = Artisan::call('cache:clear');
return 'cache cleared';
});
Использовал эту страницу несколько раз, чтобы скопировать и вставить быстрые команды в композитор, поэтому я написал команду, которая выполняет эти команды в одной команде ремесленника.
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
Удачного кодирования.
Это сработало для меня. В вашем проекте перейдите по ссылке: хранилище> framework > views. Удалите все файлы и обновите страницу.
Попробуйте это также
для кли
php artisan clear: кеш
для использования ремесленной команды
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/
Вы также можете сделать это через маршрутизатор, аналогично ответу 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 т. Д. Если вам нужно добавить / отредактировать действительные команды Artisan, просто обновите массив $ validCommands.
Cache:: вровень (); https://laravel.com/docs/5.7/cache Эта работа в классе Handler расширяет ExceptionHandler
Хотя я категорически не согласен с идеей запуска приложения laravel на виртуальном хостинге (плохая идея), этот пакет, скорее всего, решит вашу проблему. Это пакет, который позволяет вам выполнять некоторые команды ремесленников из Интернета. Это далеко от совершенства, но может работать для некоторых случаев.
Я считаю, что более эффективный подход к этому - использовать модуль задания cron в административной панели общего сервера для запуска команды планировщика laravel, которая, в свою очередь, вызовет настроенную команду artisan, что-то вроде этого должно выполнить задание:
* * * * * /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();
Вы всегда можете удалить строки выше после запуска команд