ホームページ  >  記事  >  バックエンド開発  >  PHPソケットとカールの違いは何ですか

PHPソケットとカールの違いは何ですか

藏色散人
藏色散人オリジナル
2021-10-27 10:28:122074ブラウズ

ソケットとカールの違い: 1. ソケットはサーバーとクライアント間の通信に使用できるデータ構造です; 2. Curl は URL 構文を使用してファイルとデータを転送します。多くのプロトコルをサポートしています。 FTP、HTTP、TELNET など。

PHPソケットとカールの違いは何ですか

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

これらの違いは何ですか? phpソケットとカール?

PHP におけるカールとソケットの違い

最初にソケットとは何かについて話しましょう:

PHP は berkely のソケットを使用します。ソケット ライブラリ 接続を作成するための、ソケットはデータ結果です。このソケットを使用して、サーバーとクライアント間のセッションを開くことができます。サーバーは常に待機状態にあり、クライアントがサーバーに接続すると、サーバーがセッションを待機しているポートが開きます。このとき、サーバーはクライアントの接続要求を受信し、サイクルを実行します。これで、クライアントはサーバーに情報を送信し、サーバーはクライアントに情報を送信できるようになります。

ソケットを生成するには、合計 3 つの変数が必要です:

1、プロトコル
2、ソケット タイプ
3、パブリック プロトコル タイプ

以下はこれら 3 つの変数の詳細な説明です。大まかに理解してください (笑いを覚えていただければ幸いです)
プロトコル: ソケットを生成するときに選択できるプロトコルは 3 つあります:

1、AF_INET これは、ソケットを生成するための比較的広く普及しているプロトコルです。tcp または udp プロトコル送信を使用し、ipv4 アドレス
2、AF_INET6 を使用します。明らかに、上記と同じですが、違いは、ipv6 アドレス
3、AF_UNIX であることです。 Unix または Linux マシンで使用されます。これはめったに使用されず、サーバーとクライアントの両方が Unix または Linux システムである Unix または Linux システムでのみ使用されます。

ソケット タイプ:
1. SOCK_STREAM このプロトコルは、シーケンシャルで信頼性の高い、データ完全なバイト ストリーム ベースの接続です。これは最も一般的に使用されるソケット タイプであり、このソケットは送信に TCP を使用します。
2. SOCK_DGRAM このプロトコルは、コネクションレス型の固定長転送呼び出しです。このプロトコルは信頼性が低く、接続に UDP を使用します。
3. SOCK_SEQPACKET このプロトコルは、送信用の固定長データ パケットを送信するデュアルラインの信頼性の高い接続です。このパケットは、読み取られる前に完全に受け入れられる必要があります。
4. SOCK_RAW このソケット タイプは単一のネットワーク アクセスを提供し、ICMP パブリック プロトコルを使用します。 (ping とtraceroute はこのプロトコルを使用します)
5. SOCK_RDM このタイプはめったに使用されず、ほとんどのオペレーティング システムには実装されていません. データ リンク層に提供されており、データ パケットの順序は保証されません

パブリック プロトコル タイプ:
1. ICMP (Internet Control Message Protocol) インターネット制御メッセージ プロトコル、主にゲートウェイとホストでネットワーク状態を検出し、エラー メッセージを報告するために使用されます
2. TCP (Transmission Control Protocol) 伝送制御プロトコル最も広く使用されているプロトコルであり、データ パケットが受信者に確実に到達することができ、途中でエラーが発生した場合、このプロトコルはデータ パケットを再送信します。
3. UDP (ユーザー データグラム プロトコル) ユーザー データグラム プロトコルは、コネクションレスで信頼性の低いデータ送信プロトコルです。

さて、ソケットの生成には 3 つの要素が必要であることがわかりました。そのため、php のsocket_create() には、プロトコル、ソケット タイプ、パブリック プロトコルの 3 つのパラメータが必要です。作成が成功した場合、socket_create() はソケット リソース タイプを返します。失敗した場合は、false を受け取ります。

CURL

cURL は URL 構文を使用してファイルを転送し、データツール。 HTTP、FTP、TELNET をサポートします。

cURL を使用する理由

Cookie の処理、検証、フォームの送信、ファイルのアップロードなど、Web ページ上のコンテンツを柔軟に取得したい場合があるためです。 PHP には強力な cURL ライブラリがあると言われています (どこに力があるのか​​分からないので、「と言われている」としています 笑)。

php で cURL オプションを使用するための基本的な手順は次のとおりです:
1. 初期化
2. パラメータ設定
3. ページ コンテンツの取得または操作
4. ハンドルの解放

以下の簡単な例を見てください。

<?php
//初始化curl
$ch = curl_init ();
/*
 * 设置curl
 * php手册对于curl_setopt的解释为:设置对于curl传输的操作
 * curl_setopt有三个参数:资源(一般为你建立的curl句柄)、操作(你将对这个句柄作何操作)、参数(对于这个操作你给出的参数)
 */
//例如你想对百度进行某些操作
curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");
//现在看来你要向百度post数据
curl_setopt ( $ch, CURLOPT_POST, 1 );
/*给出了要post的数据:$post_string,post的数据可以是一个文件,
*那么你需要以@加上文件的全路径给出,或者你要post一些数据,
*那么你可以按照数组形式给出,或者按照字符串给出,
*如果你想按照字符串形式给出,请把字符串urlencode,嘿嘿
*/
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_string );
/*
 *把curl操作的结果以字符串形式 从curl_exec ()返回,而不是直接就输出了
 */
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
//得到操作返回结果
$result = curl_exec ( $ch );
//关闭curl句柄
curl_close ( $ch );

PHP のカールには多くの操作があるため、すべてを覚えるのはおそらく非常に難しいでしょう。とにかく、すべてを覚えることはできません。誰もが使用する可能性のあるいくつかの操作について話しましょう。

サーバーに関する情報を取得します

<?php

//初始化curl
$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_exec($ch);
$info = curl_getinfo($ch);

var_dump($info);

上記の例を通じて、次の情報を取得します:

"url" //リソースネットワークアドレス
"content_type" //コンテンツエンコーディング
"http_code" //HTTPステータスコード
"header_size" //ヘッダーサイズ
"request_size" //リクエストされたサイズ
"filetime" //ファイル作成時間
"ssl_verify_result" //SSL検証結果
"redirect_count" //ジャンプテクノロジー
"total_time" //かかった合計時間
"namelookup_time " //DNS クエリの消費時間
"connect_time" //接続待機時間の消費
"pretransfer_time" //送信前の準備時間
"size_upload" //アップロードされるデータのサイズ
"size_download" //ダウンロードデータのサイズ
"speed_download" //ダウンロード速度
"speed_upload" //アップロード速度
"download_content_length" //ダウンロード コンテンツの長さ
"upload_content_length" //アップロードするデータの長さコンテンツ
"starttransfer_time" //転送を開始する時刻
"redirect_time" //リダイレクト時刻

curl を使用すると、次の操作も実行できます。

1. ページのポスト操作をシミュレートします。
2.ファイルのアップロード
3.HTTP 認証
4.FTP アップロード
5.FQ 手法
6.コールバック関数
ps:
上記についてcurl の大前提は、PHP のインストールおよびコンパイル時に --with-curlwrappers が追加されたことです。phpinfo() 操作を使用して、コンパイル中にこの拡張ライブラリを追加したかどうかを確認できます。
この拡張機能が読み込まれると、次のような内容が表示されます:

この拡張機能がない場合は、php.ini ファイルを変更して拡張機能を削除する必要があります。 =php_curl.dll の前のセミコロン。

さて、ソケットとカールが何であるかがわかりました。ソケットは、サーバーとクライアント間の通信に使用できるデータ構造です。 Curl は URL 構文ルールを使用してファイルとデータを転送し、FTP、HTTP、TELNET などの多くのプロトコルをサポートします。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPソケットとカールの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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