Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 部署时运行特使任务的Laravel队列不一致_Php_Laravel_Server_Laravel Horizon_Laravel Envoy - Fatal编程技术网

Php 部署时运行特使任务的Laravel队列不一致

Php 部署时运行特使任务的Laravel队列不一致,php,laravel,server,laravel-horizon,laravel-envoy,Php,Laravel,Server,Laravel Horizon,Laravel Envoy,我正在建立一个网站,它使用laravel特使在远程服务器上运行命令。当点击一个按钮来运行一个任务时,它就会被添加到队列中(我使用的是redis和horizon),这样它就可以在后台处理,而不会减慢站点的速度。我最初在ssh访问和公钥方面有问题,但现在已经解决了,但剩下的一个问题是作业运行的不一致性 首先,我要说的是,这在我的macbook pro上不是一个问题,而且每次都能可靠地工作。有时在我的debian VPS上,通常是五分之一,它可以正常工作,但在其他情况下,它根本不会运行脚本。我正在签入

我正在建立一个网站,它使用laravel特使在远程服务器上运行命令。当点击一个按钮来运行一个任务时,它就会被添加到队列中(我使用的是redis和horizon),这样它就可以在后台处理,而不会减慢站点的速度。我最初在ssh访问和公钥方面有问题,但现在已经解决了,但剩下的一个问题是作业运行的不一致性

首先,我要说的是,这在我的macbook pro上不是一个问题,而且每次都能可靠地工作。有时在我的debian VPS上,通常是五分之一,它可以正常工作,但在其他情况下,它根本不会运行脚本。我正在签入horizon,每次都会正确地分派作业,但一个本应需要大约40秒才能完成的作业在不到一秒钟的时间内完成,我在输出中什么也看不到(我有一个作业跟踪系统,用户可以在运行后查看其状态和日志)

我用来运行特使任务的代码是

exec('cd'.base_path()。&&&/home/admin/.composer/vendor/bin/envisor run'.$this->task.$this->query,$this->result)

$this->result
用于存储特使任务的输出,当任务未正确运行时,返回的结果将完全为空

另一个原因是,我只是试着运行
exec('whoami')
,但没有收到任何反馈。在它正常工作的地方,我收到了
root

我确实认为可能不同的队列工作人员使用不同的系统用户,因此使用不同的公钥来尝试连接,但我找不到任何信息来支持这一点,但这可以解释它的不规则性

任何见解或帮助都将不胜感激

PHP的
exec()。要在PHP端处理这些问题,我们需要将它们重定向到STDOUT:
exec('../envisor/run'.$this->task.$this->query.'2>&1',…)外部进程在与队列工作进程相同的用户帐户下运行,因此请检查是否为该用户设置了密钥。VPS上的PHP可能会被配置为限制我们可以调用哪些外部程序。要获得更健壮的方法,请尝试将特使的
RunCommand
作为作业进行重组。