从PHP调用python脚本-并行请求问题

从PHP调用python脚本-并行请求问题,php,exec,Php,Exec,我通过Nginx提供的php文件中的exec阻塞函数调用Python脚本。它按预期工作。Python脚本使用webdriver Chrome执行Selenium并返回xml输出 问题是当我同时创建更多请求(2个或更多)时。第一个请求被处理(nginx、php、python),第二个请求等待第一个请求的完成。它们不是并行执行的 直接从shell执行的Python脚本可以毫无问题地并行执行。您有两个选择 多线程处理 PHP本机不支持线程,但有一点。它仍然是实验性的,需要PHP7.2+,但是如果您已经

我通过Nginx提供的php文件中的exec阻塞函数调用Python脚本。它按预期工作。Python脚本使用webdriver Chrome执行Selenium并返回xml输出

问题是当我同时创建更多请求(2个或更多)时。第一个请求被处理(nginx、php、python),第二个请求等待第一个请求的完成。它们不是并行执行的

直接从shell执行的Python脚本可以毫无问题地并行执行。

您有两个选择

多线程处理 PHP本机不支持线程,但有一点。它仍然是实验性的,需要PHP7.2+,但是如果您已经在使用PHP7.2+,它将非常有用

多处理 您可以通过以下方式创建新流程。在本文中,您可以阅读有关PHP中分叉的更多信息,并将其作为一个概念进行更多介绍

或者你也可以用当前的方式使用
exec()
,但是你必须把
&
放在命令的末尾,这样PHP可能会把它传递到控制台,它可以在后台运行,然后运行第二个


有第三种使用MQ引擎的方法,但我无法帮助您,但如果您感兴趣,也可以阅读。希望这些能有所帮助。

PHP不是直接异步的,请使用pcntl扩展并查看从PHP fpm nginx调用pcntl时,pcntl可能无法工作


操作员&不是一个好的解决方案,因为我需要提供给客户机的输出。

也许您可以发布代码的相关部分,以便我们了解发生了什么