Question

Il existe une famille de méthodes ( birddog, shadow et suivez ). dans l'API Twitter qui ouvre une connexion (la plupart du temps) permanente et vous permet de suivre de nombreux utilisateurs. J'ai lancé un exemple de code de connexion avec cURL sous bash, et tout fonctionne normalement: lorsqu'un utilisateur que je spécifie écrit un tweet, un flux XML est généré dans ma console.

Ma question est la suivante: comment puis-je accéder à des données avec PHP qui ne sont pas renvoyées sous forme d'appel de fonction direct, mais sont diffusées en streaming? Ces données arrivent de manière sporadique et imprévisible. jamais traité ni je ne sais par où commencer à chercher des réponses. Tous les conseils et descriptions de bibliothèques ou de pièges seraient appréciés.

Était-ce utile?

La solution

fopen et fgets

<?php
$sock = fopen('http://domain.tld/path/to/file', 'r');
$data = null;
while(($data = fgets($sock)) == TRUE)
{
    echo $data;
}
fclose($sock);

Ce n’est certes pas un code génial (ni même bon), mais il devrait fournir les fonctionnalités dont vous avez besoin. Vous devrez entre autres ajouter le traitement des erreurs et l'analyse des données.

Autres conseils

Je suis pratiquement sûr que votre script expirera après environ 30 secondes d'écoute des données sur le flux. Même si ce n'est pas le cas, une fois que vous aurez une charge de serveur importante, le nombre impressionnant de connexions ouvertes et à l'écoute placera le serveur à terre.

Je vous suggère de jeter un coup d'œil à une solution AJAX qui appelle un script qui stocke simplement une file d'attente de messages. Cependant, je ne sais pas comment l'API de Twitter fonctionne exactement, alors je ne sais pas si vous pouvez exécuter un script à la demande d'obtention de tous les tweets, ou s'il est nécessaire de faire ajouter un démon aux tweets d'une file d'attente. que PHP peut lire et repasser via votre appel AJAX.

Il existe des bibliothèques pour cela ces jours-ci qui rendent les choses beaucoup plus faciles (et gèrent les éléments difficiles comme les reconnexions, la gestion des sockets, le backoff TCP, etc.), à savoir:

http://code.google.com/p/phirehose/

Je suggérerais d’envisager d’utiliser AJAX. Je ne suis pas un développeur PHP, mais je pense que vous pourriez connecter un appel AJAX à l'API et mettre à jour votre page Web.

Phirehose est définitivement la voie à suivre:

http://code.google.com/p/phirehose/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top