Я пытаюсь загрузить веб-страницу с помощью file_get_contents (), и у меня возникают проблемы.
По сути, мое веб-приложение будет использовать API данных YouTube для поиска видео по запросу пользователя, а затем читать страницу YouTube каждого видео, чтобы найти информацию, не предоставленную API. Я использую file_get_contents () для чтения страниц YouTube, а затем загружаю текст в анализатор DOM. В большинстве случаев это работает как шарм. Однако иногда я получаю предупреждения о том, что file_get_contents () вернул пустую строку (не для всех видео, только для некоторых из них). Я знаю, что URL-адрес, который я предоставляю, является правильным, потому что я отображаю ссылку на этот URL-адрес, и он работает, как и ожидалось. Я обновлю страницу, снова открою свой браузер, переключусь на другой браузер и т. Д., Но ничего не будет работать. Затем я оставлю эту вещь на час или два, вернусь к ней, и она снова волшебным образом сработает!
Вот фрагмент моего кода:
function processNext($int) {
// this function processes the next $int videos from the youtube data api response ($xmlDoc)
global $xmlDoc;
$begin = count($_SESSION["results"]) - $_SESSION["start"] + 1;
/* $_SESSION["results"] is the array of already-processed videos
$_SESSION["start"] and $_SESSION["end"] are the indexes of the first and last videos in the $xmlDoc
*/
$end = count($_SESSION["results"]) - $_SESSION["start"] + $int;
for ($i = $begin; $i <= $end; $i++) {
$video = $xmlDoc->entry[$i];
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
libxml_use_internal_errors(true);
// this is the line that is causing me problems
$doc->loadHTML(file_get_contents(getWatchURL(getVidID($video->id))));
$doc = $doc->documentElement;
// then, do some processing on the $doc
}
}
Возможно ли, что file_get_contents () истекает? CURL - лучший инструмент для того, что я делаю?
ОБНОВЛЕНИЕ: Я получаю такие же результаты с cURL.