Tôi đang sử dụng gói nhà soạn nhạc owlycode/streaming-bird để gọi twitter stream API. API luồng mở ra một ổ cắm giữa ứng dụng và twitter của bạn, để nhận các tweet có từ khóa được chỉ định. Trong trường hợp của tôi, từ khóa là 'hello'.Làm thế nào để kiểm tra trong PHP, nếu một ổ cắm vẫn kết nối, nếu tôi không có bộ xử lý socket?
Đây là đoạn mã sử dụng gói owlycode/trực tuyến-chim:
<?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";
});
?>
Vấn đề của tôi là khi kết nối này đã bị đóng bởi lỗi, tôi không thể biết điều đó. Vì vậy, tôi không thể kết nối lại với twitter nữa.
Có bất kỳ điều gì trong PHP tìm kiếm các ổ cắm mở dựa trên tên miền của chúng không?
Có lẽ cái gì đó như
check_if_socket_open('https://stream.twitter.com/1.1/statuses/firehose.json')
?
Lưu ý: Tôi không thể sử dụng socket_get_status, vì tôi không có biến socket.
Nó [vẻ với tôi] (https://github.com/OwlyCode/StreamingBird/blob/master/src/StreamReader.php#L80) như nó sẽ tiếp tục kết nối lại ổ cắm nếu kết nối bị mất. – miken32
Chỉ cần nhìn vào tài liệu nội tuyến, có vẻ như @ miken32 là chính xác, tôi nghĩ vấn đề là thời gian cần thiết để phát hiện mất kết nối ... ví dụ: nếu thời gian chờ mặc định là 1 phút ... thì bạn sẽ có mất 1 phút của luồng – edhurtig
Mặc dù đây là giải pháp tồi ... nhưng có thể đáng xem xét luồng stream_set_timeout ($ stream, $ giây) vì các lý do khác. http://php.net/manual/en/function.stream-set-timeout.php – edhurtig