ホームページ > バックエンド開発 > PHPチュートリアル > Webページのリクエストステータスを取得するPHPプログラム例_PHPチュートリアル

Webページのリクエストステータスを取得するPHPプログラム例_PHPチュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 10:24:44
オリジナル
1206 人が閲覧しました

Web ページから返されるステータス コードについては、通常、Web サイトのステータス コードが 200 であるか、エラー ページが 404 コードであるかを確認します。ほとんどの場合、確認方法は Web マスター ツールまたは FF ブラウザを使用します。ステータス コードを表示する関数を作成することを考える人はほとんどいません。

この記事では、Web ページのリクエストステータスを取得するための php のプログラム例を次のように簡単に説明します。

方法 1、fsockopen を使用します
(curl_getinfo は推奨されません!)

コードをコピーします コードは次のとおりです:
function get_http_code($url="localhost", $port=80, $ fsock_timeout=10) {
set_time_limit(0);
ignore_user_abort(true);

// 録画開始時間
list($usec, $sec) =explode(" ", microtime(true));
$timer[' start'] = (float)$usec + (float)$sec;

// URL を検証
if(!preg_match("/^https?:\/\//i", $url)){
$url = "http://".$url;
}
// HTTPS をサポート
if(empty($urlinfo['path'] )){
$urlinfo ['path'] = '/';
}
$host = $urlinfo[' host'];
$uri = $urlinfo['path'] . (empty($urlinfo['query'])?'' :$urlinfo['query']);

// fsock 経由で接続を開きます
if (!$fp = fsockopen($host, $port, $errno, $error, $fsock_timeout)){
list($usec , $sec) =explode(" ", microtime(true));
】 loat)$usec + (float)$sec;
,, ,,, ,,,, ,,, 終わり、 終わり」 ] =>-1, 'usetime'=>$usetime);
}

// リクエストを送信
$status =ソケット_get_status($fp);
$out = "GET {$uri} HTTP/1.1\r \ n";
$out .= "ホスト: {$host}\r\n";
$out .= "接続: 閉じる\r\n\r\n";
$write = fwrite($fp, $ out);
if(!$write){
list($usec, $sec) =explode(" ", microtime(true));
$timer['end'] = (float)$usec + (float ) $ SEC; $ Usetime = (Float) $ Timer ['End'] - (Float) $ Timer ['Start']

配列を返す ('Code' = & GT; -2, 'Usetime' = & GT) ; $ usetime);
}

$ret = fgets($fp, 1024);
preg_match("/http\/\d\.\d\s(\d+)/i", $ret, $m) ;
$code = $m[1];
fclose($fp);

list($usec, $sec) =explode(" ", microtime(true));
$timer['end'] = ( float) $usec + (float)$sec;
$usetime = (float)$timer['end'] - (float)$timer['start'];

return array('code'=>$code 、' usetime'=>$usetime);
}



file_get_contents は fsockopen 関数のシンプルなパッケージです。効率は少し劣りますが、クローリングの成功率が高いため、snoopy で問題が発生したときによく使用します。 5.0.0 では、コンテキストのサポートが追加され、ヘッダー情報を送信したり、ユーザー エージェント、リファラー、Cookie をカスタマイズしたりすることもできます。 5.1.0 では、ファイルの一部のみを読み取るための offset パラメータと maxlen パラメータが追加されました。


方法2、snoopy.class.phpを使用する


Snoopyはブラウザの機能をシミュレートするために使用されるphpクラスで、Webコンテンツを取得したりフォームを送信したりできます。

コードをコピーします

コードは次のとおりです:


$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.jb51.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result =curl_exec($ch);
curl_close($ch);
echo $result;

$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 バイト、これは単なるテストです
$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $ limit-strlen($data));
echo strlen($data) , ' , $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.jb51.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result =curl_exec($ch);
curl_close($ch);

いくつかの常見の状態:
200 - 服务器成功返還网页
404 - 要求されたネット页なし
503 - 服务器超時
301 - 页面重定向

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825353.html技術記事网页返還状態查看方式一般情况下我们都市去查自己网站状態态更是不200或错误页面是不404代,并及び大半情下我们的查看方法就是使用...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート