Php 部署时运行特使任务的Laravel队列不一致
我正在建立一个网站,它使用laravel特使在远程服务器上运行命令。当点击一个按钮来运行一个任务时,它就会被添加到队列中(我使用的是redis和horizon),这样它就可以在后台处理,而不会减慢站点的速度。我最初在ssh访问和公钥方面有问题,但现在已经解决了,但剩下的一个问题是作业运行的不一致性 首先,我要说的是,这在我的macbook pro上不是一个问题,而且每次都能可靠地工作。有时在我的debian VPS上,通常是五分之一,它可以正常工作,但在其他情况下,它根本不会运行脚本。我正在签入horizon,每次都会正确地分派作业,但一个本应需要大约40秒才能完成的作业在不到一秒钟的时间内完成,我在输出中什么也看不到(我有一个作业跟踪系统,用户可以在运行后查看其状态和日志) 我用来运行特使任务的代码是Php 部署时运行特使任务的Laravel队列不一致,php,laravel,server,laravel-horizon,laravel-envoy,Php,Laravel,Server,Laravel Horizon,Laravel Envoy,我正在建立一个网站,它使用laravel特使在远程服务器上运行命令。当点击一个按钮来运行一个任务时,它就会被添加到队列中(我使用的是redis和horizon),这样它就可以在后台处理,而不会减慢站点的速度。我最初在ssh访问和公钥方面有问题,但现在已经解决了,但剩下的一个问题是作业运行的不一致性 首先,我要说的是,这在我的macbook pro上不是一个问题,而且每次都能可靠地工作。有时在我的debian VPS上,通常是五分之一,它可以正常工作,但在其他情况下,它根本不会运行脚本。我正在签入
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
作为作业进行重组。