web-dev-qa-db-ja.com

cURLがハングして応答しない理由をどのように理解できますか?

PHPでのcURL呼び出しの問題を追跡しようとしています。テスト環境では正常に機能しますが、本番環境では機能しません。 cURL関数を実行しようとすると、ハングし、応答しません。コマンドラインからcURL接続を確立しようとしましたが、同じことが起こります。

コマンドがかき回されている間、何が起こっているのか理解できないので、cURLがどこかで起こっていることをログに記録するかどうか疑問に思っています。そこで何が起こっているかを追跡するログがあるかどうか誰かが知っていますか?

接続の問題だと思いますが、IT担当者は、問題なくアクセスできるはずだと主張しています。何か案は? CentOSを実行していてPHP 5.1。

更新:冗長モードを使用すると、エラー28「Connect()がタイムアウトしました」が発生しました。タイムアウトを100秒に延長し、max-redirsを5に制限してみましたが、変更はありません。ボックスにpingを実行しようとしましたが、タイムアウトも発生しました。それで、これをITに提示し、彼らが再びそれを見るかどうかを確認します。すべての助けに感謝します、うまくいけば、それが彼らの問題であったというニュースで30分以内に戻ってきます。

更新2:私のボックスは外部IPアドレスでサーバー名を解決していたことがわかりました。 ITが内部IPアドレスを教えてくれ、cURL呼び出しでそれを置き換えたとき、すべてがうまく機能しました。皆さんの助けに感謝します。

17
SenorPuerco

PHPで、CURLOPT_VERBOSE変数を設定できます。

curl_setopt($curl, CURLOPT_VERBOSE, TRUE);

次に、STDERR、またはCURLOPT_STDERR(ファイルポインタを取得)を使用して指定されたファイルにログを記録します。

curl_setopt($curl, CURLOPT_STDERR, $fp);

コマンドラインから、次のスイッチを使用できます。

  • --verboseコマンドラインに詳細情報を報告する
  • --trace <file>または--trace-ascii <file>でファイルをトレースします

--trace-timeを使用して、詳細/ファイル出力のタイムスタンプを付加できます。

17
Adam Hopkinson

Curl_getinfo()を使用して、特定の転送に関する情報を取得することもできます。

http://in.php.net/manual/en/function.curl-getinfo.php

0
Ramesh Tabarna

CURLOPT_MAXREDIRSを設定してみましたか?通常のブラウザユーザーには表示されない一部のWebサイトに対して、「無限」のリダイレクトループが発生する場合があることがわかりました。

0
Matthew Groves