Laravel5-清除共享主机服务器中的缓存

问题很明显。

php artisan cache:clear

是否有任何解决方案可以像上面的命令那样清除缓存,但不使用 CLI。我正在使用一个流行的共享主机服务,但按照我的计划,我没有控制面板访问。

我要清除视图缓存。

我看到一个 有个问题几乎一样,但它没有帮助我。

624412 次浏览

您可以在 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个缓存视图,它们的重量不到1 Mb,而我的 vendor目录大于40 Mb。我不认为视图缓存是磁盘使用的真正瓶颈,也从来没有真正需要清除它。

至于 应用程序缓存,它存储在 storage/framework/cache目录中,但是只有在 config/cache.php中配置了 file驱动程序时才存储。您可以选择许多不同的驱动程序,例如 雷迪斯Memcached,以提高基于文件的缓存的性能。

您可以通过 FTP 连接,并为 laravel 5清除 storage\framework\views文件夹,为 laravel 4清除 app\storage\views文件夹。

基本上,我想清除视图缓存。

现在 Laravel 5.1中有这样的命令

php artisan view:clear

如我所见: 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>';
});

没有必要给每个人清除缓存的可能性,特别是在生产环境中,所以我建议对路由进行注释,并在需要时取消注释代码并运行路由。

转到 laravelFolder/bootstrap/cache,然后将 config.php重命名为任何你想要的东西。config.php_old和重新加载您的网站。这应该像巫术一样管用。

配置缓存 Laravel 配置分布在几十个文件中,对于每个请求,每个文件的 including都是一个代价高昂的过程。要将所有配置文件合并到一个文件中,请使用:

php artisan config:cache

请记住,对配置的任何更改在缓存后都不会产生任何效果。若要刷新配置缓存,请再次运行上述命令。如果您想完全删除配置缓存,请运行

php artisan config:clear

路由缓存 路由在 laravel 中也是一项昂贵的任务:

php artisan route:cache

注意,它不适用于闭包。如果您正在使用闭包,那么这是将它们移动到控制器中的一个很好的机会,因为在尝试编译绑定到闭包的路由而不是正确的控制器方法时,Artian 命令将抛出异常。 与配置缓存相同,对 outoutes.php 的任何更改都不再有任何效果。若要刷新缓存,请在每次更改路由文件时运行上述命令。要完全清除路由缓存,请运行以下命令:

php artisan route:clear

类图优化

中型项目分布在数百个 PHP 文件中的情况并不少见。由于良好的编码行为要求我们,所有东西都有自己的文件。当然,这并非没有缺点。Laravel 必须为每个请求包含几十个不同的文件,这是一件代价高昂的事情。

因此,一个好的优化方法是声明每个请求使用哪些文件(例如,所有服务提供者、中间件和其他一些) ,并将它们组合在一个文件中,然后为每个请求加载这个文件。这与将所有 javascript 文件合并到一个文件中没有什么不同,因此浏览器将不得不向服务器发出更少的请求。

额外的编译文件(同样是: 服务提供者、中间件等)应该由您在 config/compile.php 中的 files 键中声明。一旦你把应用程序中每个请求所需的所有东西都放在那里,把它们连接到一个文件中:

php artisan optimize --force

优化作曲家自动加载

这个不仅适用于幼虫,而且适用于任何使用作曲家的应用程序。

我将首先解释 PSR-4自动加载是如何工作的,然后我将向您展示应该运行什么命令来优化它。如果您对知道作曲家是如何工作的不感兴趣,我建议您直接跳转到控制台命令。

当您向作曲家询问 App\Controllers\AuthController类时,它首先在类映射中搜索直接关联。类映射是一个类和文件1对1关联的数组。当然,由于您没有手动将 Login 类及其相关文件添加到类映射中,因此编写器将继续在名称空间中进行搜索。 因为 App 是一个 PSR-4名称空间,它默认使用 Laravel,并且与 app/文件夹相关联,所以作曲家将尝试使用基本的字符串操作过程将 PSR-4类名称转换为文件名。最后,它猜测 App\Controllers\AuthController必须位于 AuthController.php 文件中,该文件位于 Controllers/文件夹中,幸运的是,该文件夹应该位于名称空间文件夹中,即 app/

所有这些努力只是为了得到 App\Controllers\AuthController类存在于 app/Controllers/AuthController.php文件中。为了让编写器扫描整个应用程序并直接创建类和文件的1对1关联,请运行以下命令:

composer dumpautoload -o

请记住,如果您已经运行了 php Artisan 优化—— force,那么就不必再运行这个命令了。优化命令已经告诉编写器创建一个优化的自动加载。

如果在 routes/web.php文件中使用来自 LaravelLumen,则可以这样做:

use Illuminate\Support\Facades\Artisan;


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

虽然我强烈反对在共享主机上运行一个 laravel 应用程序的想法(这是个坏主意) ,但是这个软件包可能会解决你的问题。这是一个软件包,允许您运行一些工匠从网络命令。它远非完美,但可以在某些情况下工作。

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

这个包适用于 php ^ 7.0和 ^ laravel5.5

骗子中使用我仅为此目的创建的这个包。 我也面临着同样的情况。 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

希望能有帮助。

如果您想在特定时间自动运行它,那么您必须首先安装 cronjob。 例如:。

 in app/console/kernel.php

时间表功能:

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

你也可以通过路由器来完成,类似于 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 命令,只需更新 $validCommand 数组。

这招对我很管用。在您的项目中,转到: Storage > Framework > views。删除里面的所有文件,刷新你的页面。

php artisan view:clear

将清除缓存的视图

清除 CLI 之外的所有缓存,这样做; 这对我有用。

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


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


return "Cleared!";


});

缓存: : 刷新() ; Https://laravel.com/docs/5.7/cache#events 类 Handler 中的这项工作扩展了 ExceptionHandler

也试试这个

为了 Cli

缓存

使用工匠命令

 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文件夹中

然后在编写器 php artisan traqza:clear-everything中运行命令

编程愉快。

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

我相信更有效的方法是使用共享服务器管理面板中的 cron 作业模块来运行 laravel 调度器命令,这个命令会调用已配置的 Artian 命令,类似的东西应该可以完成这项工作:

* * * * * /usr/bin/php /var/www/web/artisan schedule:run /dev/null 2>&1

通过在 cron 中设置调度程序,您可以编辑 应用控制台 Kernel.php中的 计划编制方法来调用正确的 Artian 命令,如下所示:

$schedule->command('queue:work')->cron('* * * * *')->withoutOverlapping();
$schedule->command('route:cache')->cron('0 0 * * *')->withoutOverlapping();

您总是可以在命令运行之后删除上面的代码行

清除缓存删除共享宿主中缓存文件夹中的所有文件

Laravel project->bootstarp->cache->delete all files

此命令将一次清除所有类型的缓存。 :

$ php artisan optimize:clear

这是一个化名:

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

此方法添加到 Laravel5.7

本地机器

在项目根目录的终端运行 php artisan config:cache

在托管服务器上

首先尝试从宿主提供商访问终端。然后在您的项目根目录中运行 php artisan config:cache命令。

如果您没有终端访问权限,请遵循以下技巧。

  1. 转到这个目录 project-folder/bootstrap/cache
  2. 重命名或删除 config.php文件

注意: 避免删除文件它可能会造成问题,以后通过重命名您可以更改文件名,所以我建议重命名文件名。