可以使用PHP从Python socketserver写入但不能读取

可以使用PHP从Python socketserver写入但不能读取,php,python,sockets,socketserver,Php,Python,Sockets,Socketserver,我正在尝试运行一个基本的Python echo服务器,并使用PHP脚本接口。服务器成功接收数据并在写入时不抛出异常,但所有尝试在客户端读取该数据的操作都超时。这是密码 服务器: import socketserver import sys class EchoRequestHandler(socketserver.StreamRequestHandler): def handle(self): data = self.rfile.readline()

我正在尝试运行一个基本的Python echo服务器,并使用PHP脚本接口。服务器成功接收数据并在写入时不抛出异常,但所有尝试在客户端读取该数据的操作都超时。这是密码

服务器:

import socketserver
import sys

class EchoRequestHandler(socketserver.StreamRequestHandler):

    def handle(self):
        data = self.rfile.readline()
        print('{} sent: {}'.format(self.client_address[0], data))
        try:
            self.wfile.write(data)
        except Exception as e:
            print(repr(e))
        sys.stdout.flush()


if __name__ == '__main__':
    socketserver.TCPServer.allow_reuse_address = True
    server = socketserver.TCPServer(('localhost', 34447), EchoRequestHandler)
    server.serve_forever()
客户:

$stream = stream_socket_client("tcp://127.0.0.1:34447");
fwrite($stream, 'Test message.');
stream_set_timeout($stream, 2);
$result = stream_get_contents($stream);
// Tried fread as well; either way I get an empty result after timeout.
fclose($stream);

服务器成功地打印了接收到的数据,但无论我如何尝试读取对客户端的响应,它都会超时,什么也得不到。我想我一定错过了一些明显的东西,但我想不出来。提前感谢。

请求过程中php是否会阻塞,即是异步还是同步。它看起来不是异步的,但这是php中充满陷阱的主题之一。据我所知,它是阻塞的。当我尝试使用指定的非阻塞进行读取时,它立即返回一个空字符串。好的,我想知道这是否是问题所在,因为如果它不阻塞并等待响应,您将无法读取输出。您最好推出一个预构建的消息队列系统,比如我以前使用过的RabbitMq,它非常容易实现。并且有很多非常好/有用的特性。php在请求过程中是否会阻塞,即是异步还是同步。它看起来不是异步的,但这是php中充满陷阱的主题之一。据我所知,它是阻塞的。当我尝试使用指定的非阻塞进行读取时,它立即返回一个空字符串。好的,我想知道这是否是问题所在,因为如果它不阻塞并等待响应,您将无法读取输出。您最好推出一个预构建的消息队列系统,比如我以前使用过的RabbitMq,它非常容易实现。并且有很多非常好/有用的特性。