(PECL zmq >= 0.5.0)
ZMQSocket::__construct — Конструктор класса ZMQSocket
$context
   , int $type
   [, string $persistent_id = null
   [, callback $on_new_socket = null
  ]] )
   Создает экземпляр класса ZMQSocket. Параметр persistent_id
   может быть использован для установления постоянного соединения. Постоянный сокет будет
   выделен из постоянного контекста и будет оставаться активным в течении нескольких 
   запросов. Получить тот же сокет для множества запросов можно с помощью параметра
   persistent_id. Функция, заданная в
   on_new_socket вызывается лишь в случае, когда был создан
   новый сокет.
  
contextОбъект класса ZMQContext.
type
       Тип сокета. Смотрите константы ZMQ::SOCKET_*.
      
persistent_id
       Если параметр persistent_id указан, то сокет будет доступен в
       течении нескольких запросов. Если context не является
       постоянным, сокет так же вернется к непостоянному режиму.
      
on_new_socketCallback-функция, которая будет вызвана при создании нового сокета. Эта функция не вызывается в случае повторного использования постоянного соединения.
Пример #1 Пример использования ZMQSocket()
Использование функции обратного вызова для связи или подключения к сокету
<?php
/*
  Здесь используется постоянный сокет, поэтому функция будет вызвана лишь 
  при первом обращении к скрипту.
*/
function on_new_socket_cb(ZMQSocket $socket, $persistent_id = null)
{
    if ($persistent_id === 'server') {
        $socket->bind("tcp://localhost:12122");
    } else {
        $socket->connect("tcp://localhost:12122");
    }
}
/* Создать новый контекст */
$context = new ZMQContext();
/* Создать сокет */
$socket = $context->getSocket(ZMQ::SOCKET_REP, 'server', 'on_new_socket_cb');
$message = $socket->recv();
echo "Получено сообщение: {$message}\n";
?>
Callback-функция должна быть описана так:
Замечание:
function on_new_socket_cb(ZMQSocket $socket, string $persistent_id = null);
Вызовет исключение ZMQSocketException в случае ошибки.