如何在网络中托管的应用程序中运行这些工匠命令?在我的cpanel中有像cmd我可以执行这些命令吗?提前谢谢。
答案 0 :(得分:3)
您可以制作个性化路线,并在需要时拨打电话:
Route::get('/clear-cache', function() {
$output = new \Symfony\Component\Console\Output\BufferedOutput;
\Artisan::call('cache:clear', $output);
dd($output->fetch());
});
另一种解决方案是访问服务器的ssh并运行命令。
答案 1 :(得分:2)
您可以创建一个名为clear-cache.sh的简单bash脚本,如下所示:
#!/bin/sh
PHP=/path/to/your/php-binary
PATH=/path/to/your-artisan-install
cd $PATH
$PHP artisan clear:cache
$PHP artisan view:clear
保存脚本并使其可执行(chmod + x clear-cache.sh)。以特定的时间间隔通过cronjob运行它,并配置cron作业以通过电子邮件发送这两个命令的输出。这样你每次cron运行脚本时都会收到一封电子邮件(基本上cron会自动发出你的两个命令),输出就会通过电子邮件发送给你。
当然还有其他方法,比如创建一个php脚本并通过web调用它
答案 2 :(得分:0)
现在在Laravel 5.8中,您不能将对象传递给 call()函数。您必须将数组[] 作为第二个参数传递给call()函数。
Route::get('/clear-cache', function() {
$output = [];
\Artisan::call('cache:clear', $output);
dd($output);
});
答案 3 :(得分:-1)
试试这个。您可以通过以下代码清除托管在无法访问ssh shell的共享主机服务器中的所有laravel应用程序缓存:
Route::get('/cleareverything', function () {
$clearcache = Artisan::call('cache:clear');
echo "Cache cleared<br>";
$clearview = Artisan::call('view:clear');
echo "View cleared<br>";
$clearconfig = Artisan::call('config:cache');
echo "Config cleared<br>";
$cleardebugbar = Artisan::call('debugbar:clear');
echo "Debug Bar cleared<br>";
});
现在运行yourdoamin.com/cleareverything
此代码不会引发任何错误。我已经使用过这段代码。
参考:https://laravel.com/docs/5.2/artisan#calling-commands-via-code