【发布时间】:2018-09-07 11:59:35
【问题描述】:
我目前有一个PHP函数:
function sendLocalSocket($message, $port){
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH);
$socket->connect("tcp://127.0.0.1:$port");
$socket->send($message);
}
还有一个python函数:
def create_local_socket(port, pull=False):
context = zmq.Context()
if pull:
# for receiving socket messages
socket = context.socket(zmq.PULL)
socket.bind("tcp://127.0.0.1:%d" % port)
else:
# for sending socket messages
socket = context.socket(zmq.PUSH)
socket.connect("tcp://127.0.0.1:%d" % port)
return socket
然后发送带有create_local_socket(port).send_json()的消息
不幸的是,这两个函数中的任何一个在快速连续调用时都会开始严重挂起并减慢我系统的其余部分。
我一直在想办法让套接字为永不终止的 python 脚本保持打开状态,但不幸的是对于 PHP,这是在文件上传后调用的。
问题是这些函数被任意调用——php脚本每次上传使用相同的端口但是python脚本使用不同的端口(虽然有重复使用)。
我知道 php 挂起,因为 python ZMQ 侦听器记录了current time - the time the file was uploaded,这需要越来越长的时间,直到上传的积压消失。我也知道侦听器脚本没有挂起,并且在记录接收文件后需要 0.2 秒。 (但这实际上是一个积压!)
我觉得答案是保持这些联系。
编辑 1:
尝试:$context = new ZMQContext(1, true); 没有帮助。
【问题讨论】:
标签: php python sockets zeromq pyzmq