2010-03-10 4 views
0

J'essaye de construire un petit client IRC en ligne de commande en PHP parce que j'en ai marre de tous ces clients qui ont cliqué sur une vingtaine de popups/fenêtres GUI pour se connecter à un nouveau serveur.PHP fgets "noblock"?

Tout fonctionne jusqu'à présent, mais je suis bloqué avec la boucle principale qui envoie mes commandes/messages d'entrée au serveur et reçoit les nouvelles données.

Comme PHP est pas très multi-tâche facile que j'ai deux scripts PHP autonomes fonctionnant en même temps:

Le lecteur d'entrée où je peux entrer dans mes messages - il stocke le message en cours dans un fichier texte . L'auditeur du serveur/écrivain qui reçoit de nouvelles données et lit et efface le fichier texte dans lequel le lecteur d'entrée stocké dans ma commande en cours.

Cependant fgets() que j'utiliser pour lire les nouvelles données du serveur pauses the script waiting until something new arrives. Ainsi, le fichier texte d'entrée ne peut pas être lu jusqu'à ce que quelque chose de nouveau arrive du serveur, ce qui n'est pas bon.

  • Y at-il une fonction/option spéciale pour m'aider?
+0

Puis-je recommander 'irssi'? http://irssi.org –

Répondre

2

Vous devez regarder les flux, et en particulier stream_set_blocking.

EDIT: en fait, vous pouvez vous débarrasser de deux processus et faire tout en un seul processus. Utilisez des lectures non bloquantes et ça devrait aller.

Questions connexes