질문은 아주 분명합니다.
php artisan cache:clear
CLI에서 사용하는 위와 같이 캐시를 지우는 해결 방법이 있습니까? 인기있는 공유 호스팅 서비스를 사용하고 있지만 내 계획에 따라 제어판 액세스 권한이 없습니다.
** 뷰 캐시를 지우고 싶습니다. **
나는 이것과 거의 같은 질문을 보았지만 도움이되지 않습니다.
질문은 아주 분명합니다.
php artisan cache:clear
CLI에서 사용하는 위와 같이 캐시를 지우는 해결 방법이 있습니까? 인기있는 공유 호스팅 서비스를 사용하고 있지만 내 계획에 따라 제어판 액세스 권한이 없습니다.
** 뷰 캐시를 지우고 싶습니다. **
나는 이것과 거의 같은 질문을 보았지만 도움이되지 않습니다.
답변:
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
입니다.
정말로 뷰 캐시를 지우고 싶다면, 자신 만의 artisan
명령 을 작성 하고 앞서 말한대로 호출하거나, artisan
경로를 완전히 건너 뛰고 컨트롤러 나 경로에서 호출하는 일부 클래스에서 뷰 캐시를 지워야한다고 생각합니다.
하지만 내 진짜 질문은 정말 뷰 캐시를 지워야 합니까? 현재 작업중인 프로젝트에서 거의 100 개의 캐시 된 뷰가 있고 가중치는 1Mb 미만 vendor
이며 디렉토리는 40Mb를 초과 합니다. 저는 뷰 캐시가 디스크 사용에있어 실제 병목 현상이 아니라고 생각하지 않습니다.
에 관해서는 응용 프로그램 캐시 , 그것은에 저장되어있는 storage/framework/cache
디렉토리,하지만 당신은 구성된 경우에만 file
에서 드라이버를 config/cache.php
. Redis 또는 Memcached 와 같은 다양한 드라이버를 선택 하여 파일 기반 캐시의 성능을 향상시킬 수 있습니다.
cache:clear
명령은 파사드 에서 액세스되는 애플리케이션 캐시 와 함께 작동합니다 Cache
.
나는 이것이 누군가에게 도움이되기를 바랍니다.
laravelFolder/bootstrap/cache
다음으로 이동하여 config.php
원하는 이름 으로 변경하십시오 . config.php_old
사이트를 새로 고침하세요. 부두교처럼 작동합니다.
해피 코딩 ...
cache
폴더 및 .env
파일 기본 캐시 값을 제거했습니다 . 그러나이 모든 문제를 다시 삭제 한 후 .. 때 php artisan optimize
. 마지막으로 이것은 이름을 바꾸지 않고 config.php 파일의 키 값을 변경하여 내 문제를 해결했습니다. 감사 @DeadGuy
새로운 캐시 지우기 명령과 함께 아래 코드를 사용할 수 있습니까?
//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에서 비용이 많이 드는 작업입니다. route.php 파일을 캐시하려면 아래 명령을 실행하십시오.
php artisan route:cache
클로저에서는 작동하지 않습니다. 클로저를 사용하는 경우 적절한 컨트롤러 메서드 대신 클로저에 바인딩 된 라우트를 컴파일하려고 할 때 artisan 명령이 예외를 throw하므로 클로저를 컨트롤러로 이동할 수있는 좋은 기회입니다. 설정 캐시와 동일하게, route.php에 대한 변경 사항은 더 이상 영향을 미치지 않습니다. 캐시를 새로 고치려면 경로 파일을 변경할 때마다 위의 명령을 실행하십시오. 경로 캐시를 완전히 제거하려면 아래 명령을 실행하십시오.
php artisan route:clear
클래스 맵 최적화
중간 규모의 프로젝트가 수백 개의 PHP 파일에 퍼지는 것은 드문 일이 아닙니다. 좋은 코딩 행동이 우리를 지시하기 때문에 모든 것이 자체 파일을 가지고 있습니다. 물론 이것은 단점없이 오지 않습니다. Laravel은 각 요청에 대해 수십 개의 서로 다른 파일을 포함해야하므로 비용이 많이 듭니다.
따라서 좋은 최적화 방법은 모든 요청에 사용되는 파일 (예 : 모든 서비스 제공 업체, 미들웨어 등)을 선언하고이를 하나의 파일로 결합하여 나중에 각 요청에 대해로드되는 것입니다. 이것은 모든 자바 스크립트 파일을 하나로 결합하는 것과 다르지 않으므로 브라우저는 서버에 대한 요청을 줄여야합니다.
추가 컴파일 파일 (다시 말하면 서비스 제공 업체, 미들웨어 등)은 config / compile.php의 파일 키에 선언해야합니다. 앱에 대한 모든 요청에 필요한 모든 것을 여기에 넣으면 다음을 사용하여 하나의 파일에 연결합니다.
php artisan optimize --force
작곡가 자동로드 최적화
이것은 laravel뿐만 아니라 composer를 사용하는 모든 응용 프로그램을위한 것입니다.
먼저 PSR-4 자동로드가 어떻게 작동하는지 설명한 다음이를 최적화하기 위해 어떤 명령을 실행해야하는지 보여 드리겠습니다. 작곡가가 어떻게 작동하는지에 관심이 없다면 콘솔 명령으로 바로 이동하는 것이 좋습니다.
composer에게 App\Controllers\AuthController
클래스 를 요청 하면 먼저 클래스 맵에서 직접 연관을 검색합니다. 클래스 맵은 클래스와 파일이 일대일로 연결된 배열입니다. 물론 Login 클래스와 관련 파일을 클래스 맵에 수동으로 추가하지 않았기 때문에 composer는 네임 스페이스에서 이동하여 검색합니다. App은 기본적으로 Laravel과 함께 제공되고 app/
폴더에 연결되는 PSR-4 네임 스페이스이므로 composer는 기본 문자열 조작 절차를 사용하여 PSR-4 클래스 이름을 파일 이름으로 변환하려고합니다. 결국 App\Controllers\AuthController
AuthController.php 파일에 있어야 한다고 추측 합니다.이 파일 Controllers/
은 운 좋게도 네임 스페이스 폴더 인 app/
.
이 모든 노력은 App\Controllers\AuthController
클래스가 app/Controllers/AuthController.php
파일에 존재 하는지 확인하는 것 입니다. composer가 전체 애플리케이션을 스캔하고 클래스 및 파일의 직접적인 일대일 연결을 만들려면 다음 명령을 실행합니다.
composer dumpautoload -o
이미 php artisan optimize --force를 실행했다면 더 이상 실행할 필요가 없습니다. 최적화 명령은 이미 composer에게 최적화 된 자동로드를 생성하도록 지시하기 때문입니다.
이 패키지는 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');
CLI 외부의 모든 캐시 를 지우 려면 다음을 수행하십시오. 이것은 나를 위해 작동합니다.
Route::get('/clear', function() {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');
Artisan::call('view:clear');
return "Cleared!";
});
config:cache
취소 및 캐시 설정한다 - 내가 모두 추가 할 필요가 없다 생각 때문에
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 배열을 업데이트하십시오.
이것도 시도
CLI 용
php artisan clear : cache
장인 명령 사용
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/
이 페이지를 여러 번 사용하여 빠른 명령을 컴포저에 복사하여 붙여 넣었으므로 하나의 장인 명령으로 이러한 명령을 수행하는 명령을 작성했습니다.
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
폴더
그런 다음 composer에서 명령을 실행하십시오. php artisan traqza:clear-everything
즐거운 코딩입니다.
공유 호스팅에서 laravel 앱을 실행한다는 생각에 강력히 동의하지 않지만 (모든 주변에서 나쁜 생각)이 패키지가 문제를 해결할 가능성이 높습니다. 웹에서 몇 가지 장인 명령을 실행할 수있는 패키지입니다. 완벽하지는 않지만 일부 사용 사례에서는 작동 할 수 있습니다.
캐시 :: flush (); https://laravel.com/docs/5.7/cache#events Handler 클래스의이 작업은 ExceptionHandler를 확장합니다.
이에 대한보다 효율적인 접근 방식은 공유 서버 관리자 패널의 cron 작업 모듈을 사용하여 구성된 artisan 명령을 차례로 호출하는 laravel 스케줄러 명령을 실행하는 것입니다. 다음과 같이 작업을 수행해야합니다.
* * * * * /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();
명령을 실행 한 후에는 항상 위의 줄을 삭제할 수 있습니다.