gpt4 book ai didi

php - 如果套接字仍然连接,如果我没有套接字处理程序,如何检查 PHP?

转载 作者:IT王子 更新时间:2023-10-29 00:21:07 25 4
gpt4 key购买 nike

我正在使用 Composer 包 owlycode/streaming-bird调用twitter stream API .流 API 在您的应用程序和推特之间打开一个套接字,以接收具有指定关键字的推文。在我的例子中,关键字是“你好”。

这是使用 owlycode/streaming-bird 包的代码:

 <?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";
});
?>

我的问题是当这个连接被错误关闭时,我无法知道。所以我无法再次与 Twitter 重新连接。

PHP 中有没有根据域名搜索打开的套接字的东西?

也许是这样的

  check_if_socket_open('https://stream.twitter.com/1.1/statuses/firehose.json')

?

注意:我不能使用 socket_get_status ,因为我没有套接字变量。

最佳答案

如果您无权访问套接字,则无法检查套接字状态。

如果您正在寻找一种不涉及 StreamBird 代码的解决方法,那么您可以创建一个基于 \OwlyCode\StreamingBird 的类,然后实现它的 connect 方法:

<?php
class MyStreamReader extends \OwlyCode\StreamingBird
{
protected $stream;

protected function connect($timeout = 5, $attempts = 10)
{
return $this->stream = parent::connect($timeout, $attempts);
}

protected function isConnected()
{
return $this->stream && stream_get_meta_data($this->stream)['eof'];
}
}


class MyStreamingBird extends \OwlyCode\StreamingBird
{
public function createStreamReader($method)
{
$oauth = new \OwlyCode\StreamingBird\Oauth($this->consumerKey,
$this->consumerSecret, $this->oauthToken, $this->oauthSecret);
return new MyStreamReader(new \OwlyCode\StreamingBird\Connection(), $oauth, $method);
}
}


$bird = new MyStreamingBird($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$reader = $bird->createStreamReader(StreamReader::METHOD_FILTER); // ...

$reader->isConnected();

您还可以创建一个基于 \OwlyCode\StreamingBird 的类,它也可以访问流。但是,您必须跟踪这些流,因为它是一种工厂方法。

关于php - 如果套接字仍然连接,如果我没有套接字处理程序,如何检查 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com