2013-07-31 6 views
-3

PHP 스크립트를 사용하여 YouTube 비디오를 ID로 재생하고 비디오 타이틀 및 관련 비디오를 가져옵니다.실패한 경우 작업을 다시 시도하는 방법

내 문제는 제목 또는 관련 비디오 링크가 표시되기 전에 페이지로드가 완료되는 경우가 종종 있습니다.

000WebHost.com 무료 웹 호스팅을 사용하고 있습니다. 보안상의 이유로 set_time_limit()을 비롯한 일부 기능을 사용 중지하는 것과 같은 몇 가지 제한 사항이 있으므로 사용할 수 없습니다.

예를 들어 길이가 0 인 경우 제목과 동영상 링크를 다시로드 할 수 있습니까? 이 같은

뭔가 :

<?php 
    if (strlen($title) == 0) { 
     // Do something here to retry loading the title from 
     // http://www.youtube.com/get_video_info?video_id=VIDEO_ID   
    } 
?> 

어떤 아이디어?

+0

가장 좋은 방법은 제한이없는 값싼 웹 호스팅을 구입하는 것입니다. – Brad

답변

1

do-while 루프를 사용하지 않는 이유는 무엇입니까? 이렇게하면 시간 초과되거나 유효한 응답이 수신 될 때까지 계속 비디오 정보를로드하려고 시도합니다.

/** 
* @return boolean Whether the given argument is a valid 
* YouTube API response 
**/ 
function isValidApiResponse($response) 
{ 
    // ... your logic here ... // 
} 

$videoId  = 'someId'; 
$timeoutTime = time() + 10; // Stop trying after 10 seconds 

do { 
    $apiResponse = CURL::get("https://gdata.youtube.com/feeds/api/videos/{$videoId}?v=2"); 
    $pageLoaded = isValidApiResponse($apiResponse); 
} while ((time() < $timeoutTime) AND (! $pageLoaded)); 

if ($pageLoaded) { 
    // SUCCESS: Page loaded properly 
} else { 
    // ERROR: Timed out 
} 
+0

고마워요 – WebRookie

+0

+1 좋은 지적, 다른 상황에 대한 아이디어가 있어요. –

관련 문제