3

私のコードには、次のような外部URLからコードをロードするincludeステートメントがあります。

include 'http://123.123.123.123:8080/servlet/statemodel'

問題は、サーブレットのロードに約35秒かかることです。

ブラウザでアクセスhttp://123.123.123.123:8080/servlet/statemodelすると、すべて正常に機能します(とにかくインターネット経由でアクセスできないため、IPを変更しました)。

ただし、icludeステートメントを使用するPHPと、ファイルを含めるために約20秒試行し、includeステートメントの後にコードを続行します。

エラーメッセージはありません。また、requireを使用しても、エラーメッセージは表示されません。

インクルードのタイムアウトはありますか?そして、なぜエラーメッセージがないのですか?

たぶんtomcatは実際にデータ(http-header)を送信しますが、PHPは一部のコンテンツが続くのを約20秒だけ待ちますか?

このタイムアウトを変更するオプションはありますか?

4

1 に答える 1

5

これでタイムアウトを設定します:

ini_set("default_socket_timeout", $value);

ただし、デフォルト値は60秒であり、これで十分です。

たぶんあなたはより多くを見つけることができます:

error_reporting(E_ALL);
ini_set("display_errors", 1);

IMOの最もクリーンなソリューションは、PHPスクリプトのHTMLを提供した後、AJAXリクエストを使用してサーブレットのコンテンツをロードすることです。そうすれば、ユーザーはすぐに結果を得ることができ、より多くのコンテンツが読み込まれていることをユーザーに示すことができます。

于 2012-09-11T08:20:15.687 に答える