繁体   English   中英

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

[英]Call python script from PHP - parallel requests problem

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

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

直接从shell执行的Python脚本可以并行执行而不会出现问题。

您有两个选择。

多线程

PHP本机不支持线程,但是有此解决方案 它仍处于试验阶段,需要PHP 7.2+,但是如果您已经在使用PHP 7.2+,它将像魅力一样工作。

多处理

您可以通过分叉来创建新流程。 您可以在此答案中阅读有关PHP分叉的更多信息,并在此处更多地了解它的概念。

或者,您也可以使用exec()以当前方式exec() ,但是必须在命令的末尾加上& ,因此PHP可能会将其传递到控制台,并且它可以在后台运行并运行第二个。

还有第三种使用MQ引擎的方法,但是我对此无能为力,但是如果您有兴趣的话,也可以阅读它。 希望这些帮助。

PHP是不是直接asyncronious,使用了pcntl extencion看看这个

从php-fpm nginx调用pcntl可能无法正常工作

运算符不是一个好的解决方案,因为我需要将输出提供给客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM