Php Laravel 5.2作为守护进程/永久运行命令

Php Laravel 5.2作为守护进程/永久运行命令,php,laravel,laravel-5.2,daemon,Php,Laravel,Laravel 5.2,Daemon,一旦我有了一个命令方法,就有可能让commad永远运行吗 到目前为止,我有一个ajax,它需要 \Artisan::queue('socket:start'); “socket:start”是我的命令 这确实有效,但只持续30秒。在那之后,我的进程就结束了 我尝试作为守护进程运行,但没有成功 我如何才能让用户选择运行我的命令,并让它在后台永远处于活动状态?您遇到了这个问题,因为apache版本的PHP有一个超时。默认情况下,CLI版本不会这样做,因此您可以使用PHP的函数运行artisan命令

一旦我有了一个命令方法,就有可能让commad永远运行吗

到目前为止,我有一个ajax,它需要

\Artisan::queue('socket:start');
“socket:start”是我的命令

这确实有效,但只持续30秒。在那之后,我的进程就结束了

我尝试作为守护进程运行,但没有成功


我如何才能让用户选择运行我的命令,并让它在后台永远处于活动状态?

您遇到了这个问题,因为apache版本的PHP有一个超时。默认情况下,CLI版本不会这样做,因此您可以使用PHP的函数运行artisan命令,该命令应该可以工作:

exec('php artisan socket:start');

与往常一样,只有在您确切知道进入
exec()。我在哪里能找到这些?在config/queue.php中没有日志的位置。只是关于“failed_jobs”表的一些东西,我的DB^^“我是说你的套接字服务器…这只是启动它的命令。套接字服务器日志说什么?服务器正常。当我在控制台(php artisan socket:start)中运行它时,工作正常,并且“永远”运行。问题似乎是我正在调用\artisan::queue('socket:start');使用ajax,由于我的命令永远不会完成(不支持),所以laravel使用timeout来完成它,这是因为PHP的CLI版本在默认情况下没有超时(我记得)。您可以执行类似于
的操作,这不是强烈推荐的操作,而是一个选项。在生产中,最好设置一个类似于supervisor的软件,以确保命令永远运行,即使在重新启动、可能由于运行时错误导致的突然命令失败等事件中也是如此