Что делает постоянство, так это сигнализирует распределителю памяти использовать функции постоянного выделения памяти, которые будут распределять контекст (и, если вы спрашиваете, любые сокеты) таким образом, который не исчезнет в конце запроса, но будет длитьсявремя жизни процесса PHP.Это работает так же, как некоторые библиотеки пулов соединений, если это имеет смысл.Обратный вызов будет использоваться при первом создании сокета.Постоянство необходимо установить в контексте, например:
<?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');
Даст вам
# php -dextension=zmq.so test.php
=========Creating without persistence ==========
Creating New Socket
mysocket
Creating New Socket
mysocket
========Creating with persistence ==========
Creating New Socket
mysocket
В первом случае, при значении false для постоянства сокет воссоздается каждый рази ответный звонок сработал.Во втором случае при включенном постоянстве сокет только что возвращается, и обратный вызов не запускается.