Laravel 5.8在Blade视图中单击按钮时在后台运行PHP Artisan命令

时间:2019-07-12 06:56:12

标签: laravel queue scheduler

我需要通过单击按钮(同步)从刀片服务器视图运行调度程序任务,并且该任务应该在后台进行处理。

我创建了一个artisan命令,它是php artisan projects:get,然后我将它安排为每天在cron作业中运行一次,但是在某些情况下,我们需要根据用户的选择运行cron作业,因此当他/她是在登录的CMS中,他们可以单击同步按钮以从那里运行cron作业,但是我认为这是不可能的,但是我知道Laravel中有一些工作可以处理我已经创建的php artisan命令,即项目:从交响乐开始使用队列或进程,但是我知道我可以使用腻子或cPanel终端窗口在命令行(终端)上执行此操作,但是如您所知,客户端无法登录cPanel并运行命令,因此我们需要给它们只是一个简单的按钮,可以单击并在后台同步,现在,当用户单击该按钮时,它会延迟,并且他/她无法从我在该命令中使用的API提取所有项目的同时继续从事其他工作。我们需要排队/后台进程。

php artisan项目:获取

2 个答案:

答案 0 :(得分:0)

您可以像这样以编程方式运行artisan命令:

路线

Route::get('/run/command', 'SomeController@runCommand');

SomeController

public function function()
{
    $exitCode = \Illuminate\Support\Facades\Artisan::call('projects:get');
    return $exitCode;
}

答案 1 :(得分:0)

如您所指出的,您可以按照in the documentation

中的说明从php代码中运行artisan命令

由于artisan命令可能需要花费一些时间才能执行,因此,为此使用queue是一个好习惯。

您在评论中说,您正在使用xampp。在本地上,启动xampp后,需要运行pap artisan queue:work命令。执行命令后,观察者将拾取作业并将其执行。但是,首先您需要配置队列。 This将使您开始运作。在生产服务器上,您需要配置主管以运行queue命令。