PHP 8.6.0 Beta 3 is available for testing

Swoole\Event::write

(PECL swoole >= 1.9.0)

Swoole\Event::writeÉcrit des données sur un socket de manière asynchrone

Description

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

Rend l'envoi de données asynchrone pour les ressources de flux et de sockets.

Note:

Si des données sont écrites en continu sur un socket alors que le pair ne les lit pas assez vite, le tampon du socket finit par être saturé. Dans ce cas, la couche basse de Swoole stocke les données excédentaires dans un tampon en mémoire et attend le déclenchement de l'événement d'écriture avant de tenter d'écrire à nouveau sur le socket. Cependant, si ce tampon en mémoire est lui aussi saturé, Swoole émet l'erreur « pipe buffer overflow, reactor will block » et bascule en mode bloquant, suspendant les écritures suivantes jusqu'à ce que de la place se libère.

Note:

Le retour de false lorsque le tampon est saturé est une opération atomique : soit la totalité des données est écrite, soit rien ne l'est.

Avertissement

Event::write ne peut pas être utilisée avec des flux ou des sockets chiffrés en SSL/TLS (connexions tunnelisées).

Avertissement

En cas de succès, Event::write bascule automatiquement $socket en mode non bloquant.

Liste de paramètres

fd

Descripteur de fichier (ressource de flux ou de socket, entier, ou objet).

data

Données à envoyer (leur longueur ne doit pas dépasser la taille du tampon du socket).

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple avec 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