(PECL swoole >= 1.9.0)
Swoole\Event::write — Escribe datos en un socket de forma asíncrona
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
falsepor 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).
Event::write no puede utilizarse con streams o sockets cifrados mediante SSL/TLS (conexiones tunelizadas).
Tras una ejecución correcta, Event::write cambiará automáticamente $socket a modo no bloqueante.
fdDescriptor de fichero (recurso stream/socket, entero u objeto).
dataDatos a enviar (la longitud no debe exceder el tamaño del búfer del socket).
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);
?>