Php ZMQ-getsocket方法

Php ZMQ-getsocket方法,php,zeromq,Php,Zeromq,zeromq中getSocket(类型、持久性、回调)的用途是什么 如果上下文中不存在具有相同持久性标识的套接字,它会创建一个新套接字吗 这是我的客户 函数newSocket(ZMQSocket$soc,$pid){ echo$pid; } $context=new ZMQContext(); $socket=$context->getSocket(ZMQ::socket_PUSH,'mysocket','newSocket'); $socket->setSockOpt(ZMQ::SOCKOPT

zeromq中getSocket(类型、持久性、回调)的用途是什么

如果上下文中不存在具有相同持久性标识的套接字,它会创建一个新套接字吗

这是我的客户

函数newSocket(ZMQSocket$soc,$pid){
echo$pid;
}
$context=new ZMQContext();
$socket=$context->getSocket(ZMQ::socket_PUSH,'mysocket','newSocket');
$socket->setSockOpt(ZMQ::SOCKOPT_HWM,5);
$socket->connect(“tcp://172.16.136.59:5555");
对于($i=0;$isend(“hai”,ZMQ::MODE_NOBLOCK));
睡眠(2);
}
每次我同时运行这个客户机多少次[n-1个客户机启动后的第n个客户机],回调都会被执行。 这是你想要的行为吗?
套接字结构将被重用的所有情况都是什么?

持久性所做的是向内存分配器发出信号,让其使用持久性内存分配函数,这将以一种不会在请求结束时消失的方式分配上下文(如果您要求,任何套接字),但将持续PHP进程的生命周期。如果有意义的话,它的工作方式与一些连接池lib的工作方式类似。回调将在第一次创建套接字时使用。需要在上下文中设置持久性,例如:

<?php

function newSocket(ZMQSocket $soc, $pid)    {
    echo "Creating New Socket \n", $pid, "\n";
}

echo "=========Creating without persistence ==========\n";

$context = new ZMQContext(1, false);

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

echo "========Creating with persistence ==========\n";

$context = new ZMQContext(1, true);

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

在第一个实例中,使用false到persistence,每次都会重新创建套接字,并触发回调。在第二种情况下,当persistence打开时,只返回套接字,而不触发回调

持久性的作用是通知内存分配器使用持久性内存分配函数,这将以一种不会在请求结束时消失的方式分配上下文(如果您要求,还包括任何套接字),但将持续PHP进程的生命周期。如果有意义的话,它的工作方式与一些连接池lib的工作方式类似。回调将在第一次创建套接字时使用。需要在上下文中设置持久性,例如:

<?php

function newSocket(ZMQSocket $soc, $pid)    {
    echo "Creating New Socket \n", $pid, "\n";
}

echo "=========Creating without persistence ==========\n";

$context = new ZMQContext(1, false);

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

echo "========Creating with persistence ==========\n";

$context = new ZMQContext(1, true);

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'mysocket', 'newSocket');

在第一个实例中,使用false到persistence,每次都会重新创建套接字,并触发回调。在第二种情况下,当persistence打开时,只返回套接字,而不触发回调

你看过文件了吗?如果这是php,请查看感谢您的回复Zeiss。顺便说一句,我确实参考了我发现这个方法的文档。但问题是我不清楚abt“这个回调函数,它是在创建一个新的套接字结构时执行的。如果重新使用底层的持久连接,这个函数不会被调用”。“底层持久连接”是什么意思?ZMQ在连接到另一台服务器时重用套接字。您可能想看看ZMQ文档本身,以了解其中的一些概念。我对zmq了解不够,无法在这里帮助您。您看过文档了吗?如果这是php,请查看感谢您的回复Zeiss。顺便说一句,我确实参考了我发现这个方法的文档。但问题是我不清楚abt“这个回调函数,它是在创建一个新的套接字结构时执行的。如果重新使用底层的持久连接,这个函数不会被调用”。“底层持久连接”是什么意思?ZMQ在连接到另一台服务器时重用套接字。您可能想看看ZMQ文档本身,以了解其中的一些概念。我对zmq的了解还不够,无法在这里帮助您。这太棒了:)我使用推拉式插座。Push-side执行绑定并使用持久上下文。我做
ab-n1000-c300http://workspace/zmq/zmqPTS.php
我发现我们损失了大约100到200毫克。你能猜出为什么会这样吗?那是因为“慢接”症状吗??我怎样才能克服这个问题?太棒了:)我使用推拉插座。Push-side执行绑定并使用持久上下文。我做
ab-n1000-c300http://workspace/zmq/zmqPTS.php
我发现我们损失了大约100到200毫克。你能猜出为什么会这样吗?那是因为“慢接”症状吗??我如何克服这个问题?