Php 调用外部进程会导致永远不会返回响应
我有一个PHP函数,它调用外部Python脚本并捕获结果。代码按预期工作,我从这个函数收到响应,没有任何问题 Python 3.7.3脚本对数据库进行PyODBC调用,将数据读回Pandas,并将结果作为JSON返回 我使用官方的Php 调用外部进程会导致永远不会返回响应,php,docker,Php,Docker,我有一个PHP函数,它调用外部Python脚本并捕获结果。代码按预期工作,我从这个函数收到响应,没有任何问题 Python 3.7.3脚本对数据库进行PyODBC调用,将数据读回Pandas,并将结果作为JSON返回 我使用官方的PHP:7-apachedocker映像运行php7.4.10 function shell_exec($command) { $proc = proc_open($command,array(1 => array('pipe','w'),2 =>
PHP:7-apache
docker映像运行php7.4.10
function shell_exec($command) {
$proc = proc_open($command,array(1 => array('pipe','w'),2 => array('pipe','w'),),$pipes);
$stdout = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
proc_close($proc);
return($stdout);
}
但是,使用此函数的用户请求的任何页面都不会返回给用户。我的意思是,如果用户请求page.php
,那么整个脚本都会运行(我可以使用XDebug进行验证),但是在调用exit之后代码>用户浏览器就像在等待更多数据一样挂起。我用curl
测试了相同的场景,它也只是挂起等待数据
如果我删除了这个调用,那么就没有挂起,并且任何没有调用这个函数的页面也会返回良好的结果
从命令行调用Python脚本不会显示任何奇怪的结果;正如前面提到的,我在调试时看到的结果看起来100%正确
是什么导致我的响应挂起,我可以如何解决/排除此问题