こんにちはstackoverflowの人々、
少し背景
私のPHPはIISを使用してWindows7comにインストールされ、web.configを実装し、SQL Server(mssql)のバージョンは12.0です。
私が構築したサイトは理論上の3層アーキテクチャであり、2つのcomを使用してテストしました。1つのcomにはmssqlとWeb層が含まれ、もう1つのcomにはアプリ層が含まれています。
したがって、ユーザーが接続すると、次のように接続されます
[user's com] --request page--> [web tier] --request info--> [app tier] --get info--> [mssql tier]
PHPのcUrl関数を使用して、アプリ層にリクエストを送信します。これは次のようになります。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'curl');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
$result = trim(curl_exec($ch));
この質問を少し盗用します。
$ .ajax呼び出しを使用して、証言やメッセージなどのWeb層からのものを受け取ることがあります。
一般的なページには、おそらく10〜20個のcUrl呼び出しが含まれています。
問題
問題は、サイトが3〜4ページ後にフリーズし続ける(ランダムですが、通常はこの範囲内です)か、ページがすべてをロードしないことです(これは、curlopt_timeoutオプションによるものであると理解していますか?説明が必要です)。 IISサーバーを再起動します。comをフリーズし続けるのはcUrl関数であることがわかりました。
私は今、解決策を数ヶ月探してきましたが、約20の異なる解決策を経て、私は気が遠くなりました。cUrlがIIS全体をフリーズする(ローカルホスト全体がフリーズする)理由がわかりません。また、サイト全体を別のcomにコピーしても(さらに悪化した)、なぜそれが戻り続けるのかわかりません。
2つのcom(上記を参照)でテストしていたとき、サイトの読み込みが非常に遅くなりました。明らかにcUrlのせいです。
誰かが何が起こっているのか、そして可能であれば解決策に光を当てることができることを願っています。
stackoverflowコミュニティに感謝します。
追加情報
問題の解決に役立つ場合、すべてのcUrlリクエストはアプリ層の単一のphpファイルdbQuery.phpに送信されます。このファイルは、入力を読み取り、必要なmssqlテーブルページを読み込み、情報を取得または送信し、mssqlの結果を次のように返します。 xml。(最大のページで37個のcUrl呼び出しが生成されたため、これがボトルネックになる可能性があると考えています)。
アップデート
今朝(2012年3月26日)cUrl呼び出しの数を減らしてみたところ、Webサイトのパフォーマンスが大幅に向上しました。しかし、凍結はまだ発生します:\