file_get_contents()でWebページを読み込もうとしていて、問題が発生しています。file_get_contentsは、Webページを読み込もうとしているときに空の文字列を返します。
基本的に私のウェブアプリケーションは、ユーザーのクエリに基づいて動画を検索し、各動画のYouTubeページを読み込んで、APIによって提供されていない情報を検索します。 file_get_contents()を使用してYouTubeのページを読み込み、テキストをDOMパーサーに読み込みます。ほとんどの場合、これは魅力のように機能します。しかし、場合によっては、file_get_contents()が空の文字列を返すという警告が表示されます(すべての動画ではなく、一部の文字のみ)。私はそのURLへのリンクをエコーし、期待通りに機能するので、私が提供しているURLが正しいことを知っています。私はページをリフレッシュし、ブラウザを開いたり、別のブラウザに切り替えたりしますが、何も動作しません。それから、私は1時間か2の間それを残して、それに戻って来て、それは魔法のように再び働くでしょう!ここで
は、私のコードの抜粋です:
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で同じ結果を得ます。
一般的なページであり、多くの人が閲覧している場合、file_get_contentsがタイムアウトする可能性があります。 php.iniをチェックし、default_socket_timeoutがどのように設定されているかを確認してください。 – Kyle