【发布时间】: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