twitter stream API'u aramak için owlycode/streaming-bird bir besteci paketi kullanıyorum. Akış API'si, belirtilen bir anahtar kelimeye sahip tweet'leri almak için uygulamanızla Twitter arasında bir yuva açar. Benim durumumda anahtar kelime 'merhaba'.PHP'de, hala bir soket takılıysa, soket tutucum yoksa nasıl kontrol edilir?
İşte kod kullanarak owlycode/akış-kuş paketidir:
<?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";
});
?>
Benim sorunum bu bağlantı hatası kapatıldığında, bunu biliyorum alamıyorum olduğunu. Bu yüzden tekrar twitter ile yeniden bağlanamıyorum.
PHP'de, etki alanı adlarına göre açık yuvaları araştıran bir şey var mı?
Belki
check_if_socket_open('https://stream.twitter.com/1.1/statuses/firehose.json')
gibi bir şey?
Not: Soket değişkeni olmadığı için socket_get_status kullanamıyorum.
O [bana bakar] (https://github.com/OwlyCode/StreamingBird/blob/master/src/StreamReader.php#L80) bağlantı kesilirse soketin yeniden bağlanmasını sağlar. – miken32
Sadece satır içi belgelere bakarak, miken32'nin doğru gibi göründüğü gibi, sorunun bağlantı kaybını algılamak için gereken süredir olduğunu düşünüyorum ... örneğin: zaman aşımı varsayılanı 1 dakikadır ... – edhurtig
akışının 1 dakikasını kaybetti Kötü bir çözüm olsa da, başka nedenlerden dolayı stream_set_timeout ($ stream, $ saniyeler) içine bakmaya değer olabilir. http://php.net/manual/en/function.stream-set-timeout.php – edhurtig