Swoole\Event::write
PHP Manual
PHP Manual»Swoole\Event»Swoole\Event::write

Swoole\Event::write

(PECL swoole >= 1.9.0)

Swoole\Event::write — Escribe datos en un socket de forma asíncrona

Descripción

public static function Swoole\Event::write(mixed $fd, mixed $data): bool

Hace que el envío de datos sea asíncrono para los recursos de tipo stream/socket.

Nota:

Si se escriben datos continuamente en un socket pero el otro extremo no puede leerlos con suficiente rapidez, el búfer del socket acabará por llenarse. En ese caso, la capa subyacente de Swoole almacenará los datos sobrantes en un búfer en memoria y esperará a que se dispare el evento de escritura antes de intentar escribir de nuevo en el socket. Sin embargo, si el búfer en memoria también se llena, Swoole lanzará un error "pipe buffer overflow, reactor will block" y cambiará a modo bloqueante, deteniendo las escrituras posteriores hasta que vuelva a haber espacio disponible.

Nota:

El retorno de false por búfer lleno es una operación atómica: garantiza o bien el éxito completo (todos los datos escritos) o bien el fallo total (nada escrito).

Advertencia

Event::write no puede utilizarse con streams o sockets cifrados mediante SSL/TLS (conexiones tunelizadas).

Advertencia

Tras una ejecución correcta, Event::write cambiará automáticamente $socket a modo no bloqueante.

Parámetros

fd

Descriptor de fichero (recurso stream/socket, entero u objeto).

data

Datos a enviar (la longitud no debe exceder el tamaño del búfer del socket).

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Ejemplos

Ejemplo #1 Ejemplo de Swoole\Event::write()

<?php
use Swoole\Event;

$fp = stream_socket_client('tcp://127.0.0.1:9501');
$data = str_repeat('A', 1024 * 1024*2);
Event::add($fp, function($fp) {
     echo fread($fp);
});
Event::write($fp, $data);
?>

To Top