La lecture des données à partir de fsockopen en utilisant fgets/fread se bloque

Voici le code que j'utilise:

if (!($fp = fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr, 15)))
    echo "Could not connect to host";
$server_response = fread($fp, 256);
echo $server_response;

fwrite($fp, "C01 CAPABILITY"."\r\n");
while (!feof($fp)) {
    echo fgets($fp, 256);
}

- Je obtenir la première réponse:

OK Gimap ready for requests from xx.xx.xx.xx v3if9968808ibd.15 

mais ensuite la page. J'ai cherché à travers stream_set_blocking, stream_set_timeout, stream_select, fread, etc. mais ne pouvait pas le faire fonctionner. J'ai besoin de lire toutes les données que le serveur envoie et ensuite poursuivre avec d'autres commandes (je serais de la récupération des e-mails en utilisant imap).

Grâce

Êtes-Vous sûr que la réponse est seulement 256 caractères? Et êtes-Vous sûr que le support est accessible en écriture? Il est possible que Votre script se bloque sur fwrite() en raison de la socket n'est pas accessible en écriture...
Oui. Je l'ai testé qu'en remplaçant la boucle while par simple écriture fgets($fp,256) deux fois. Et c'est la réponse que j'obtiens : * CAPACITÉ IMAP4rev1 DÉSÉLECTIONNER INACTIVITÉ de l'espace de NOMS QUOTA ID XLIST ENFANTS X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH C01 OK

OriginalL'auteur victor_golf | 2012-05-04