优化使用 YouTube API 获取 YouTube 视频的 PHP 代码,'uploadstatus'在 Codeigniter 中使用 curl 库获取 YouTube 视频



我的应用程序主要使用youtube视频,现在我的任务是消除不播放的youtube视频,i。E、私人或被用户删除等…所以我写了这样一个脚本:

function badvideos()
    {
        $ids=array();
        $query=$this->db->query("select Id,VideoUrl from  VideoTable where Status=1"); //Status=1 means active videos
        $res=$query->result();
        foreach($res as $val)
        {
            $status="";
            $videoid=$val->VideoUrl;             //getting each video videourl
            $videoid=explode('=',$videoid);      
            $videoid=$videoid[1];                //getting videoid
            $videourl="https://www.googleapis.com/youtube/v3/videos?    
            part=status&videoSyndicated=true&type=video&id=".$videoid."&key=Myapikey";
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_URL,$videourl);
            $output=curl_exec($ch);                   //curl execution
            $response = json_decode($output, TRUE);
            foreach($response['items'] as $value)
            {
                $status=$value['status']['uploadStatus'];
            }
            if($status!="processed")                  //if bad video
            {                                    
                $ids[]=array("id"=>$val->Id,"videourl"=>$val->VideoUrl);
            }
        }
        echo json_encode($ids);       //showing json response of bad videos 'videourls
    }

代码运行正常,当我必须执行100条记录或更少…3000条记录花了我20分钟....但是如果我必须在50,000条记录上运行....

是否有一种方法可以优化代码以获得更好的性能,或者可以从数据库中扫描数千条记录并检查其'uploadstatus'......

我建议并行运行CURL以同时获取多个请求,

这可以通过Curl Multi实现来完成

参见示例代码

请注意,您不必通过身份验证就可以知道哪些视频已被删除,因此可以使用此链接代替

http://gdata.youtube.com/feeds/api/videos/{$videoId}

并节省一些认证时间

相关内容

  • 没有找到相关文章

最新更新