Sto utilizzando un pacchetto di composizione owlycode/streaming-bird per chiamare twitter stream API. L'API stream apre una presa tra la tua app e Twitter, per ricevere tweet con una parola chiave specificata. Nel mio caso la parola chiave è "ciao".Come controllare in PHP, se un socket è ancora connesso, se non ho il gestore di socket?
Ecco il pacchetto owlycode/streaming-uccello codice utilizzando:
<?PHP
$oauthToken = '';
$oauthSecret = '';
$consumerKey = '';
$consumerSecret = '';
$bird = new StreamingBird($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$bird
->createStreamReader(StreamReader::METHOD_FILTER)
->setTrack(['hello']) // Fetch every tweet containing one of the following words
->consume(function ($tweet) { // Now we provide a callback to execute on every received tweet.
echo '------------------------' . "\n";
echo $tweet['text'] . "\n";
});
?>
mio problema è quando questa connessione è chiusa da un errore, non sono in grado di sapere che. Quindi non riesco più a riconnetterti con Twitter.
C'è qualcosa in PHP che cerca i socket aperti in base al loro nome di dominio?
Forse qualcosa di simile
check_if_socket_open('https://stream.twitter.com/1.1/statuses/firehose.json')
?
Nota: non riesco a utilizzare socket_get_status, perché non ho la variabile socket.
E [Sembra a me] (https://github.com/OwlyCode/StreamingBird/blob/master/src/StreamReader.php#L80) come se continuasse a ricollegare il socket in caso di perdita della connessione. – miken32
Solo guardando la documentazione inline, sembra che @ miken32 sia corretto, penso che il problema sia il tempo necessario per rilevare una perdita di connessione ... per esempio: se il timeout è impostato su 1 minuto ... allora avrai perso 1 minuto del flusso – edhurtig
Anche se si tratta di una soluzione sbagliata ... potrebbe valere la pena esaminare stream_set_timeout ($ stream, $ secondi) per altri motivi. http://php.net/manual/en/function.stream-set-timeout.php – edhurtig