Documentación offline PHP master

ZMQSocket::__construct

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

ZMQSocket::__construct

Construir un nuevo ZMQSocket

Descripción#

public ZMQSocket::__construct(ZMQContext $context, int $type, [string $persistent_id], [callable $on_new_socket])
```php

Construye un objeto ZMQSocket. Se puede utilizar el parámetro `persistent_id` para asignar un socket persistente. Un socket persistente tiene que ser asignado desde un contexto persistente, por lo que permanece conectado durante múltiples peticiones. Se puede emplear el parámetro `persistent_id` para recordar el mismo socket durante múltiples peticiones. `on_new_socket` es llamado solamente cuando se crea un nueva estructura de socket subyacente.

## Parámetros

`context`  
Un objeto ZMQContext.

`type`  
El tipo de socket. Véanse las constantes `ZMQ::SOCKET_*`.

`persistent_id`  
Si se especifica `persistent_id`, el socket será persistente durante múltiples peticiones. Si `context` no es persistente, el socket recurrirá al modo no persistente.

`on_new_socket`  
Función de retrollamada que es ejecutada cuando se crea una nueva estrucutra de socket. Esta función no es invocada si la conexión persistente subyacente es reutilizada.

```php
callback(ZMQSocket $socket, [string $persistent_id])

Errores/Excepciones#

Lanza una ZMQSocketException en caso de error.

Ejemplos#

Un ejemplo de ZMQSocket

Utilizar una callback para bind/connect del socket

<?php

/*
  El socket es persistente, por lo que esta función es llamada solamente en la
  primera petición del 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");
    }
}

/* Asignar un nuevo contexto */
$context = new ZMQContext();

/* Crear un nuevo socket */
$socket = $context->getSocket(ZMQ::SOCKET_REP, 'server', 'on_new_socket_cb');

$message = $socket->recv();
echo "Mensaje recibido: {$message}\n";
?>