我想在网站在线时在后台运行php artisan队列:
我从link开始尝试了这种方式,但是没有用:
我在app / Console / Kernel.php上编写了此功能
protected function osProcessIsRunning($needle)
{
// get process status. the "-ww"-option is important to get the full output!
exec('ps aux -ww', $process_status);
// search $needle in process status
$result = array_filter($process_status, function($var) use ($needle) {
return strpos($var, $needle);
});
// if the result is not empty, the needle exists in running processes
if (!empty($result)) {
return true;
}
return false;
}
这段代码可以在schedule()方法中调用它
if (!$this->osProcessIsRunning('queue:work')) {
$schedule->command('queue:work')->everyMinute();
}
如何在不使用 supervisor-configuration 的情况下执行类似的操作?
答案 0 :(得分:0)
进行路由并以编程方式执行artisan命令。
Route::get('/queue', function(){
$exitCode = \Illuminate\Support\Facades\Artisan::call('queue:work');
});
现在,点击此网址一次,您的队列:工作就会开始。
答案 1 :(得分:0)
在共享主机中,您必须具有SSH访问权限才能执行调度程序或cron作业。 没有外壳访问权,您将无法在laravel中运行调度程序。 即使我们尝试使用program运行,您也必须每次都无法运行该程序。 因此,推荐的方法是获得ssh访问或具有ssh访问的专用托管。
或要求您的提供者授予ssh访问权限。 然后在linux中尝试cron作业。即:crontabs,ecron,fcron。