# ZMQSocket::__construct

(PECL zmq >= 0.5.0)

ZMQSocket::__construct — Construct a new ZMQSocket

### 说明

public ZMQSocket::__construct(
ZMQContext `$context`,
int `$type`,
string `$persistent_id` = `null`,
callable `$on_new_socket` = `null`
)

Constructs a ZMQSocket object. `persistent_id` parameter can be used to allocated a persistent socket. A persistent socket has to be allocated from a persistent context and it stays connected over multiple requests. The `persistent_id` parameter can be used to recall the same socket over multiple requests. The `on_new_socket` is called only when a new underlying socket structure is created.

### 参数

`context`

  ZMQContext object.

`type`

  The socket type. See `ZMQ::SOCKET_*` constants.

`persistent_id`

  If `persistent_id` is specified the socket will be persisted over multiple requests. If `context` is not persistent the socket falls back to non-persistent mode.

`on_new_socket`

  Callback function, which is executed when a new socket structure is created. This function does not get invoked if the underlying persistent connection is re-used.

  callback(ZMQSocket `$socket`, string `$persistent_id` = `null`)

### 错误／异常

Throws ZMQSocketException on error.

### 示例

示例 #1 A ZMQSocket() example

Using callback the bind/connect socket

`<?php
/*
The socket is persistent so this function is called only on the
first request to the script.
*/
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");
}
}
/* Allocate a new context */
$context = new ZMQContext();
/* Create a new socket */
$socket = $context->getSocket(ZMQ::SOCKET_REP, 'server', 'on_new_socket_cb');
$message = $socket->recv();
echo "Received message: {$message}\n";
?>`
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open