2013-10-02 1 views
0

일부 데이터 세트가 특정 YouTube 동영상에 연결되는 hughe 데이터베이스가 있습니다. 우리 모두가 YouTube에서 잠시 후에 일부 YouTube 동영상이 사라진다는 사실을 알고 있으므로 내 솔루션과 제 문제도 발생합니다. - 검색 할 데이터가 있는지 JSON을 통해 확인하여 YouTube 동영상이 있는지 확인하고 싶습니다. 동영상에서. 그렇지 않은 경우 해당 데이터 집합을 삭제하면됩니다.Youtube API에서 While 루프의 데이터 검색

$result = $db->query("SELECT id, link FROM songs"); 
    while($row = $result->fetch_assoc()) 
    { 
     $number = 1+$rown++; 
     $id  = $row['id']; 
     $link  = $row['link']; 
다음 코드와 같이 유튜브에서 검색 할 데이터가있는 경우

그래서 내 솔루션의 첫 번째 부분은 내 데이터 테이블의 각 행을 통해 이동하고 각 ID를 확인하는 것입니다

 $video_ID = $link; 
     $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json"); 
     $JSON_Data = json_decode($JSON); 
     $views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'}; 

     echo $number .' row<br />'; 
     echo $link .' link<br />'; 
     echo $views .' views<br /><br />'; 

    } 

이 시도는 정상적으로 작동하고 필요한 데이터를 출력합니다. 유일한 문제는 첫 번째 150-190 행의 데이터를 가져 오는 것뿐입니다. 이제 각 행에서 빈 YouTube 데이터를 확인하는 솔루션을 확인하고 있는데 두 가지 구체적인 질문이 있습니다.

1st) 하나의 쿼리에서 데이터를 검색하는 데 제한이 있으므로 YouTube에서 책임 져야할까요?) 성공 내 PHP 코드로하지만,하지 않고,

2)는이 X-초 후에 쿼리를 중지 내 서버 문제가 될 수 있음 (하지만 난 이미 선하고 set_time_limit (10000000를 넣어 시간 제한을 확장)?

희망에 미리 감사드립니다.

답변

0

YouTube는 자연히 일정 기간 동안 요청할 수있는 요청의 수를 제한합니다.

유튜브 API가 불규칙 API 사용과 관련된 문제를 방지하기 위해 할당량을 적용 : 불행하게도, v2의 그 한계가 무엇인지에 대한 명확한 가이드 라인이 ... 가이드 라인에 불과 상태가 없습니다. 특히 too_many_recent_calls 오류 은 API 서버가 동일한 발신자 에서 너무 많은 호출을 짧은 시간 내에 수신했음을 나타냅니다. 이 유형의 오류가 발생하면 몇 분 후에 다시 요청을 시도하는 것이 좋습니다.

시간이 문제가되지 않는다면 각 쿼리가 느려질 수 있으므로 10-15 초마다 한 번만 요청할 수 있습니다. 또는 일괄 처리를하는 것이 좋습니다. 이를 통해 최대 50 개의 요청을 동시에 처리 할 수 ​​있습니다.이 요청은 일일 할당량에 대한 전체 요청에 대해 50 개의 요청으로 계산되지만 시간 할당량 당 하나의 요청으로 계산됩니다. API의 v2를 사용하여 일괄 처리하는 것은 다소 복잡합니다. 먼저 일괄 처리 끝점에 POST 요청을 한 다음 여러 요청으로 보낼 수있는 결과를 기반으로합니다. - 그래서 귀하의 경우에는, 당신은 좋겠

https://developers.google.com/youtube/2.0/developers_guide_protocol?hl=en#Batch_processing

일괄 처리가 방금 인 videoId 매개 변수는 동영상의 쉼표로 구분 된 목록이 될 가지고 당신에 대한 정보를 원하는, V3 훨씬 쉽습니다 : 여기에 문서입니다 이 같은 URL에 file_get_contents을 실행

https://www.googleapis.com/youtube/v3/videos?part=id&id={comma-separated-list-of-IDs}&maxResults=50&key={YOUR_API_KEY} 

다시 JSON 응답에 오지 않는 목록에있는 모든 비디오 ID는 더 이상 존재하지 않습니다. 한 번에 50 번을하고 15 초를 기다린 다음 50 번을 더 수행하면 더 나은 성능을 얻을 수 있습니다.