PHP 8.6.0 Beta 3 is available for testing

Swoole\Event::write

(PECL swoole >= 1.9.0)

Swoole\Event::writeEscribe 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);
?>

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top