3
我有一个Python服务器终于工作并响应多个命令的输出,但是我现在遇到了PHP接收完整输出的问题。我已经尝试过诸如fgets,fread之类的命令,似乎可行的唯一命令是“fgets”。在PHP 5.x中使用fsockopen循环Fget
然而,这仅收到对数据线的,然后,我创建了一个while语句以下所示的:
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
但是它似乎是Python的服务器没有在输出使PHP页面结束发送FEOF超时并且不显示任何内容。就像我上面所说的那样,只是运行echo fgets($ handle),工作正常,输出的一行,再次运行命令都不会显示下一行等。
我附上了Python脚本的重要部分:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", port))
s.listen(5)
print "OK."
print " Listening on port:", port
import subprocess
while 1:
con, addr = s.accept()
while True:
datagram = con.recv(1024)
if not datagram:
break
print "Rx Cmd:", datagram
print "Launch:", datagram
process = subprocess.Popen(datagram+" &", shell=True, stdout=subprocess.PIPE)
stdout, stderr = process.communicate()
con.send(stdout)
con.close()
s.close()
我还附上完整的PHP脚本:
<?php
$handle = fsockopen("tcp://xxx.xxx.xxx.xxx",12345);
fwrite($handle,"ls");
echo fgets($handle);
fclose($handle);
?>
感谢, 阿什利
工作非常感谢,最后一件事,当我Cntrl + C退出程序关闭它时,它并不干净地关闭该部分。我查看了运行一段时间语句的cntr +然后关闭套接字。但是我不知道我是否仍然可以在运行软件的while语句的同时做到这一点。 – AshleyUK 2009-06-21 18:31:35