ウェブサイトが公開されているかどうかをプログラムで確認したいと思います。「cURL」または「fopen」を使用してURLを開くことでこれを実行できることはわかっていますが、ページ全体をフェッチする必要があるため、時間がかかります。
さらに、サポートされていないプロトコルがWebサイトを開くことができるなど、他の理由がある可能性があるため、この方法は信頼できません。
他に方法はありますか?
ウェブサイトが公開されているかどうかをプログラムで確認したいと思います。「cURL」または「fopen」を使用してURLを開くことでこれを実行できることはわかっていますが、ページ全体をフェッチする必要があるため、時間がかかります。
さらに、サポートされていないプロトコルがWebサイトを開くことができるなど、他の理由がある可能性があるため、この方法は信頼できません。
他に方法はありますか?
HEADリクエストを使用するだけで、ページ全体ではなく、ページのヘッダーのみを取得できます。それでも、Webサイトはページ全体を生成しますが、少なくともすべてをダウンロードするわけではありません。
これを実現するには、多くのメソッドを使用できます。リクエストのヘッダーを変更する方法を確認するだけで、GETを実行する代わりに、HEADを実行できます。
fopen()
fread()
また、Webページ全体を読まないでください(とにかく必ずしもそうとは限りません)。これを使用して、数バイトだけを読み取って、Webサイトが存在するかどうかを判断できます(200 OK)。
ヘッダーリクエストを送信してhttp応答コードを確認するだけでいいですか?
$file = 'http://www.test.com/idontexist.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}