Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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将服务器端.exe的输出流到本地Python中_Php_Python - Fatal编程技术网

通过PHP将服务器端.exe的输出流到本地Python中

通过PHP将服务器端.exe的输出流到本地Python中,php,python,Php,Python,在这种情况下,我在本地运行Python脚本,并使用f=urllib.urlopen()查询服务器并传递一些参数。服务器端的PHP脚本接受参数,检查参数,并使用passthru()命令将其传递给可执行文件。可执行文件运行,然后将输出传递回客户端,在客户端使用response=f.read()读取。然后打印响应 这是可行的,但是在进程结束时,输出返回到一个大的块中。我想做的是让在线可执行文件的输出在python终端本地运行时打印出来。有人知道在这里采取什么好方法吗?我已经尝试了f:print lin

在这种情况下,我在本地运行Python脚本,并使用
f=urllib.urlopen()
查询服务器并传递一些参数。服务器端的PHP脚本接受参数,检查参数,并使用
passthru()
命令将其传递给可执行文件。可执行文件运行,然后将输出传递回客户端,在客户端使用
response=f.read()
读取。然后打印响应

这是可行的,但是在进程结束时,输出返回到一个大的块中。我想做的是让在线可执行文件的输出在python终端本地运行时打印出来。有人知道在这里采取什么好方法吗?我已经尝试了f:print line中的行
,但它给出了与以前相同的行为

表示“如果size参数被省略或为负数,则read()方法可能直到数据流结束时才读取;在一般情况下,没有很好的方法确定套接字中的整个流已被读取。”

因此,您可以尝试一次处理一个字符,如下所示:

line = ''
while True:
    char = f.read(1)
    if not char:
        break
    elif char == '\n':
        print line
        line = ''
    else:
        line += char

# or a tidier form based on
# http://bob.ippoli.to/archives/2005/06/14/python-iterators-and-sentinel-values/
line = ''
for char in iter(lambda: f.read(1), ''):
    if char == '\n':
        print line
        line = ''
    else:
        line += char

你试过冲水吗?这听起来像是PHP脚本一次将一个大数据块中的数据转储到输出中,更改PHP脚本不是更好吗?当您通过web浏览器访问url时,服务器是否将命令输出流化?如果PHP脚本在发送之前收集了所有输出,那么您需要修复PHP脚本。但是,如果它已经对数据进行了流式处理,那么您可以使用我下面的答案来处理传入的流式数据。对于PHP脚本,我改为使用popen而不是passthrough,并且必须强制执行无缓冲: