Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过RESTAPI不断检查TwitchTV查看器计数_Php_Ajax_Api_Codeigniter_Curl - Fatal编程技术网

Php 通过RESTAPI不断检查TwitchTV查看器计数

Php 通过RESTAPI不断检查TwitchTV查看器计数,php,ajax,api,codeigniter,curl,Php,Ajax,Api,Codeigniter,Curl,所以基本上,我想做的是实时获取当前直播流的观众数量。我有一个检查,看看流是否是活的。如何持续ping API以获取更新的值,以便我可以将更新的值发送到文档?在这种情况下,它将最终更新我设置的$viewers变量。如果有什么不同,那么我正在使用的应用程序就是CodeIgniter框架。下面是我目前必须拨打的代码。现在我必须重新加载页面以获得实际值,它使用cURL进行API调用 class Streaming { var $base_url = "https://api.twitch.

所以基本上,我想做的是实时获取当前直播流的观众数量。我有一个检查,看看流是否是活的。如何持续ping API以获取更新的值,以便我可以将更新的值发送到文档?在这种情况下,它将最终更新我设置的
$viewers
变量。如果有什么不同,那么我正在使用的应用程序就是
CodeIgniter框架
。下面是我目前必须拨打的代码。现在我必须重新加载页面以获得实际值,它使用cURL进行API调用

class Streaming {   
    var $base_url = "https://api.twitch.tv/kraken/";
    var $client_id = 'client_id_here';
  public function load_stream_stats($channel) {
    $curl = curl_init();
    curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1,
                                    CURLOPT_URL => $this->base_url . 'streams/'. $channel .'?client_id=' . $this->client_id
                                  )
    );
    $result = curl_exec($curl);
    //makes sure that the cURL was excuted if not it generates the error stating that it didn't succeed.
    if(!curl_exec($curl)){
        die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
    } else {
        //cURL Response worked
        if(!empty($channel)) {
            $return = json_decode($result);
            if($return->stream == null) {
                return;
                // stream is offline no need to do anything
            } else {
                $stream_details = array('viewers' => $return->stream->viewers);
                // $return->stream->viewers gives a number e.g. 1052
                return $stream_details;
            }
        } 
    }
    curl_close($curl);
  }
}

手头的问题是如何ping TwitchtV API以从restapi获取更新的查看器计数?

这里是正在工作的ajax。在site\u url/auto\u update/broadcast/username中,我有一个json值,其中包含从API中提取的查看器计数,因此我可以自动更新它。因此,将api中的查看器计数编码并将其编码为json,然后可以提取所有值

<script type="text/javascript">
    var viewers = <?= $viewers ?>;
    var username = "<?= $username ?>";
    var site_url = "<?= base_url() ?>";
    var poll_interval = 3000;
</script>
<script type="text/javascript">
$(document).ready(function() {
    $('#viewers').append(viewers);

    setInterval(function(){
        $.ajax({
            url: site_url + "auto_update/broadcast/" + username,
            type: "GET",
            dataType: "json",
            cache: false,
            success: function(data) {
              if (data == null) return;
              var update_viewers = data['viewers'];
              console.log(update_viewers);
              $('#viewers').html(update_viewers);
            }
          });
    }, poll_interval);
});
</script>

var=;
var username=“”;
var site_url=“”;
var poll_间隔=3000;
$(文档).ready(函数(){
$(“#查看器”).append(查看器);
setInterval(函数(){
$.ajax({
url:site\u url+“自动更新/广播/”+用户名,
键入:“获取”,
数据类型:“json”,
cache:false,
成功:功能(数据){
if(data==null)返回;
var update_viewers=数据['viewers'];
日志(更新查看器);
$('#viewers').html(更新#viewers);
}
});
},轮询间隔);
});
AJAX调用包含最新更新的查看器计数的函数,然后将其编码为json。我每3秒钟调用一次这个函数。如果附加了客户端ID,则不会受到速率限制。希望这能帮助别人


如果你有任何问题,请告诉我,我会尽力帮助你

使用ajax就在这里。在site\u url/auto\u update/broadcast/username中,我有一个json值,其中包含从API中提取的查看器计数,因此我可以自动更新它。因此,将api中的查看器计数编码并将其编码为json,然后可以提取所有值

<script type="text/javascript">
    var viewers = <?= $viewers ?>;
    var username = "<?= $username ?>";
    var site_url = "<?= base_url() ?>";
    var poll_interval = 3000;
</script>
<script type="text/javascript">
$(document).ready(function() {
    $('#viewers').append(viewers);

    setInterval(function(){
        $.ajax({
            url: site_url + "auto_update/broadcast/" + username,
            type: "GET",
            dataType: "json",
            cache: false,
            success: function(data) {
              if (data == null) return;
              var update_viewers = data['viewers'];
              console.log(update_viewers);
              $('#viewers').html(update_viewers);
            }
          });
    }, poll_interval);
});
</script>

var=;
var username=“”;
var site_url=“”;
var poll_间隔=3000;
$(文档).ready(函数(){
$(“#查看器”).append(查看器);
setInterval(函数(){
$.ajax({
url:site\u url+“自动更新/广播/”+用户名,
键入:“获取”,
数据类型:“json”,
cache:false,
成功:功能(数据){
if(data==null)返回;
var update_viewers=数据['viewers'];
日志(更新查看器);
$('#viewers').html(更新#viewers);
}
});
},轮询间隔);
});
AJAX调用包含最新更新的查看器计数的函数,然后将其编码为json。我每3秒钟调用一次这个函数。如果附加了客户端ID,则不会受到速率限制。希望这能帮助别人


如果你有任何问题,请告诉我,我会尽力帮助你

您需要使用ajax调用获取查看器数量的脚本。这里没有“实时”这个词。您只能每隔一段时间对其进行轮询。您可以检查该站点是否对每分钟可以访问的次数有限制。我在读到,如果您提供
client\u id
,则调用API没有限制。如果我是通过AJAX来实现这一点的,那么我将如何编写代码来向这个特定函数发出AJAX请求呢。这个函数是我唯一需要检查间隔的函数。我正在努力确保代码尽可能干净,并且易于为其他想要使用我的脚本的人实现。这里有一个例子:如果这对请求有影响,这是CodeIgniter框架中的一个库,它使用MVC方法。您需要调用脚本,通过ajax获得查看者的数量。这里没有“实时”这个词。您只能每隔一段时间对其进行轮询。您可以检查该站点是否对每分钟可以访问的次数有限制。我在读到,如果您提供
client\u id
,则调用API没有限制。如果我是通过AJAX来实现这一点的,那么我将如何编写代码来向这个特定函数发出AJAX请求呢。这个函数是我唯一需要检查间隔的函数。我正在努力确保代码尽可能干净,并且对于希望使用我的脚本的其他人来说易于实现。这里有一个例子:如果它对请求有影响,那么这就是CodeIgniter框架中的一个库,它使用MVC方法。