【问题标题】:optimize php code that uses youtube api to get youtuber video 'uploadstatus' using curl library in codeigniter优化使用 youtube api 的 php 代码,以使用 codeigniter 中的 curl 库获取 youtube 视频“上传状态”
【发布时间】:2014-07-23 12:15:27
【问题描述】:

我的应用主要使用 youtube 视频,现在我的任务是消除不播放的 youtube 视频,即私有或被用户删除等...所以我编写了如下脚本:

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 条记录上运行...

有没有办法优化代码以获得更好的性能或替代扫描数以千计的数据库记录并检查其“上传状态”......提前谢谢......

【问题讨论】:

  • 你是在本地主机上运行它吗?通过 yt api 的请求也有限制,但我猜没有 50k 记录(单位)。

标签: php sql codeigniter curl youtube-api


【解决方案1】:

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

这可以使用Curl Multi 实现来完成

Example Code

请注意,您无需进行身份验证即可知道哪些视频已被删除,因此可以改用此链接

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

并节省一些认证时间

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2023-01-22
    • 2012-12-23
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多