PHP の cURL ライブラリには主に 2 つの Request と Guzzle があり、どちらも非常に複雑です。
リクエストは最初に cURL を使用します。cURL がない場合、トランスポートを手動で指定しない限り、fsockets は自動的に有効になります。
Guzzle は豊富なログ ライブラリのサポートとログ形式を備えており、コードの観点からは、プラグイン サブスクリプションを使用しており、高品質です。
cURL (少なくとも v3 のみ) のみをサポートし、ReactPHP が依存する Symfony の EventEmitter に依存します。
最近 (2014-03-28)、名前空間が実際に変更され、最初の 2 つの段落が 1 つの段落に減り、トップレベルの Guzzle も変更されたことがわかりました。ソース コード ディレクトリから削除されると意味がありません。そのため、他の一般的な PHP ライブラリとの上位互換性も矛盾もありません。
ここが重要なポイントです。Guzzle は通常はうまく機能しますが、昨日問題が見つかりました。支払い結果を確認するには、Alipay にアクセスする必要があります。この URL を呼び出すと、Guzzle は成功しませんが、Requests は成功します。
以下は、cURL コマンドについてです。connect-timeout と timeout-max (通常、後者はプログラム内でタイムアウトと呼ばれます) の 2 つのタイムアウトがあり、後者には前者と cURL のデフォルトの connect-timeout が含まれます。は 300 秒で、timeout-max には値が設定されていませんが、タイムアウトを設定しない場合は、包含により少なくとも 300 秒になります。
PHPのfsocketの場合、php.iniにdefault_socket_timeoutという設定項目があるため、デフォルト値は60秒のみです。
さらに、cURL はデフォルトでは http リダイレクトをサポートしておらず、-L オプション (パラメーターなし) を渡す必要があります。ただし、PHP と Python の使用経験に基づいて、少なくとも Guzzle のドキュメントでは、多くの cURL ライブラリがデフォルトでリダイレクトを有効にしています。有効になっていることが明確に示されているため、必要に応じて手動で閉じてください。