ホームページ  >  記事  >  バックエンド開発  >  PHPのHTTPリクエスト関数の使い方のヒント

PHPのHTTPリクエスト関数の使い方のヒント

PHPz
PHPzオリジナル
2023-06-17 10:56:351893ブラウズ

PHP は低水準言語として、ネットワーク開発で広く使用されています。 Web 開発では、http リクエストは重要な部分です。この記事では、PHPでよく使われるhttpリクエスト関数とその使い方、および対応テクニックを紹介します。

1.curl

curl は非常に人気のある http リクエスト関数であり、さまざまなプロトコル、認証方法、プロキシ、その他の機能をサポートしています。これは PHP ベース インストール パッケージの一部であるため、使用するためにインストールする必要はありません。

(1) 基本的な使用法

サンプル コード:

$url = 'http://www.example.com';
$ch = curl_init(); // 初始化curl
curl_setopt($ch, CURLOPT_URL, $url); // 设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl请求的结果保存到变量中,而不直接输出到屏幕
$res = curl_exec($ch); // 执行请求
curl_close($ch); // 关闭curl
echo $res;

上記の例では、最初に curl_init() 関数を使用してカール ハンドルを初期化しました。次に、curl_setopt() 関数を呼び出して 2 つのオプションを設定します。

  • CURLOPT_URL: 要求された URL を設定します。
  • CURLOPT_RETURNTRANSFER: 結果を出力せずに変数に直接保存するようにcurlを設定します。

最後に、curl_exec() を呼び出してリクエストを実行し、curl_close() を使用してカール ハンドルを閉じます。リクエストによって返された結果は変数 $res に保存され、直接出力できます。

(2) POST リクエスト

場合によっては、HTTP POST リクエストを送信する必要があります。 curl では、CURLOPT_POST および CURLOPT_POSTFIELDS オプションを使用して POST リクエストを送信できます。

サンプル コード:

$url = 'http://www.example.com';
$post_data = array('key1' => 'value1', 'key2' => 'value2');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true); //设置为POST请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //设置POST参数
$res = curl_exec($ch);
curl_close($ch);
echo $res;

上記のコードでは、まずリクエストの URL および POST パラメータを設定し、次に、curl オプションで CURLOPT_POST を設定して識別します。 POST リクエストを作成し、CURLOPT_POSTFIELDS を使用して POST パラメータを設定します。最後に、curl を使用してリクエストを実行し、結果を出力します。

(3) タイムアウト設定

curl を使用すると、タイムアウトの問題が発生する場合があります。この問題を解決するために、curl は CURLOPT_TIMEOUT および CURLOPT_CONNECTTIMEOUT オプションを提供します。

  • CURLOPT_TIMEOUT: リクエストがタイムアウトすると、curl は待機を停止し、すぐに終了します。
  • CURLOPT_CONNECTTIMEOUT:curl がリモート ホストとの接続を確立するのにこのオプションで設定した秒数よりも長い時間がかかる場合、接続は失敗したとみなされ、curl は待機を停止して終了します。

サンプル コード:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间设置为10秒
$res = curl_exec($ch);
curl_close($ch);
echo $res;

上記のコードでは、curl オプションの CURLOPT_TIMEOUT オプションを 10 秒に設定し、リクエストのタイムアウトが超過した場合にそれを示します。 10 秒後、curl は待機を停止して終了します。

2. file_get_contents

curl に加えて、PHP は他の http リクエスト関数もいくつか提供します。これらの中で最も基本的なのは file_get_contents です。

(1) GET リクエスト

サンプル コード:

$url = 'http://www.example.com';
$res = file_get_contents($url); // 直接获取URL的内容
echo $res;

上記のコードでは、PHP の組み込み file_get_contents() 関数を使用して、直接URLの内容を取得して出力します。

(2) タイムアウトの設定

file_get_contents 関数を使用する場合、タイムアウトの設定が必要な場合があります。 stream_context_create() 関数を通じてコン​​テキスト ストリームを作成し、それを 3 番目のパラメータとして file_get_contents() 関数に渡すことができます。

サンプル コード:

$url = 'http://www.example.com';
$context = stream_context_create(array('http' => array('timeout' => 10))); // 超时时间设置为10秒
$res = file_get_contents($url, false, $context);
echo $res;

上記のコードでは、コンテキスト ストリームを作成し、そのタイムアウトを 10 秒に設定します。次に、file_get_contents() 関数を使用し、コンテキスト ストリームを 3 番目のパラメーターとして関数に渡します。

3. fsockopen

fsockopen は、ソケットを開くために使用される PHP の関数です。これを使用してサーバーと直接通信できます。

サンプル コード:

$host = 'www.example.com';
$port = 80;
$timeout = 10;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout); // 和服务器建立连接

$request = "GET / HTTP/1.1
";
$request .= "Host: $host
";
$request .= "Connection: close

"; // 请求头
fwrite($fp, $request); // 发送请求
while (!feof($fp)) {
    echo fgets($fp, 1024); // 输出结果
}
fclose($fp); // 关闭连接

上記のコードでは、fsockopen() 関数を使用してソケット接続を開き、ホスト www.example.com のポート 80 への接続を確立します。次に、GET リクエスト ヘッダーを設定し、ソケット経由でサーバーに書き込みます。最後に、while ループを使用して結果を出力し、fclose() 関数を使用して接続を閉じます。

概要

HTTP リクエストは Web 開発の基礎の 1 つです。この記事では、PHP でよく使用される http リクエスト関数とその使用方法を紹介します。これらの関数の使用方法を理解すると、対応する関数をより簡単かつ効率的に実装することができます。

以上がPHPのHTTPリクエスト関数の使い方のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。