ホームページ  >  記事  >  バックエンド開発  >  PHP はソケットリクエストを模倣してページを返すメソッドを実装します、phpsocket_PHP チュートリアル

PHP はソケットリクエストを模倣してページを返すメソッドを実装します、phpsocket_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:15:09815ブラウズ

PHPは、ソケットリクエストを模倣してページを返すメソッド、phpsocket

を実装します

この記事の例では、PHP がソケットリクエストを模倣してページを返すメソッドを実装する方法を説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

コードをコピーします コードは次のとおりです:
$url = "www.XXXX.com" // 自分で置き換えます
; $parse = parse_url($url); // URL を解析し、そのコンポーネントを返します。
$host = $parse['host'];
$path = $parse['path'];
$ポート = 80;
$タイムアウト = 80;
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout) // ソケットリンクを開きます
if (!$fp){
Echo $errno."--".$errstr; //エラーがある場合は、エラーコードとエラーメッセージを返します
} その他 {
$out = "POST $path HTTP/1.1rn"; //以下はHTTPリクエストヘッダー情報です
$out .= "ホスト: ".$host."rn";
$out .= "受け入れる: */*rn"; $out .= "接続: 閉じる";
$out .= "クッキー: $cookiernrn";

@fwrite($fp, $out); //リンクにリクエスト情報を書き込みます
$status = ストリーム_get_meta_data($fp); If(!$status['timed_out']) {
While (! Feof ($ fp)) {
If(($header = @fgets($fp)) && ($header == "rn" || $header == "n")) {
壊す;                                                                                                                                                                                          $stop = false;                                                                                                                                                                                                                                                                                                       ​  $data = fread($fp,8192); $return .= $data;                                                                                                                                                  fclose($fp);
print_r($return);
}


この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。




php はページを 400 回以上ループする必要があり、そのたびに戻り時間が不確定になり、その結果、アクセス時間が超過してしまうことがよくあります。
1. js の setInterval+ajax を使用してリクエストし、PHP で条件を追加して成功したかどうかを判断します。

function test($url) などの PHP 再帰ループを使用します。 {

echo $ url.'\t\n--------';

$r = @file_get_contents($url);//ここで返すのは次がない場合のページ数です。ページにアクセスすると、0 が返され、実行が停止されます。 );}
else {

echo 'fail';

}
}
$url = 'test.com/1.php?p=1';
$res = test($url);

?> ;




phpはソケットを使用してWebコンテンツを取得します




function GETBySocket($URL, $port=80) {
//URL からホストを取得
preg_match('/\/\/.*\//sU',$URL,$host_array);
if(!$host_array[0]) {
$URL.='/';
preg_match('/\/\/.*\//sU',$URL,$host_array);
}
$host=substr ($host_array[0],2,-1);
//connect
$fp = stream_socket_client("$host:$port", $errcode, $errstr, 1);// または die("get ". $ホスト ." 失敗しました");
//
$header = "GET ". $URL。 " HTTP/1.1\r\n";
$header .= "受け入れる: */*\r\n";
$header .= "Accept-Language: zh-cn\r\n";
//$header .= "HTTP_CONNECTION: Keep-Alive\r\n";
$header .= "HTTP_ACCEPT: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\ r\n";
$header .= "HTTP_ACCEPT_CHARSET: gbk,*,utf-8\r\n";
//$header .= "Accept-Encoding: gzip, deflate\r\n";
$header .= "ユーザー エージェント: Mozilla/4.0(互換性; MSIE 6.0; Windows NT 5.1;)\r\n";
$header .= "ホスト: "。 $host ."\r\n";
//$header .= "接続: キープアライブ\r\n";
//$header .= "Cookie: cnzz02=2; rtime=1; ltime=1148456424859; cnzz_eid=566......残り下全文>>
 

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/906115.html技術記事 PHP 実装モジュールがソケット要求を返すメソッド、phpsocket 本書の例では、PHP 実装モジュールがソケット要求を返すメソッドを説明しています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。