你好計算器人民凍結,我的3層網站保持中使用cUrl
背景
我的PHP安裝在窗口的第7位COM使用IIS和我實現的web.config和SQL Server (mssql)版本是12.0。
我建立的網站是在一個理論3層架構,這意味着我已經測試使用2 com與一個COM包含mssql和網絡層,另一個包含應用程序層。
所以當用戶連接時,它連接像使用PHP的cUrl作者功能將請求發送到應用層這
[user's com] --request page--> [web tier] --request info--> [app tier] --get info--> [mssql tier]
IM,它看起來是這樣的:
$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));
剽竊this question一位。
有時我使用$ .ajax調用接收來自Web層的東西,比如推薦或消息。
一個典型的頁面可能包含10-20個cUrl調用。
的問題
的問題是該網站保持在3頁或四頁(這是隨機的,但通常在此範圍內)或頁面犯規負載一切(凍結其我的理解,這是由於curlopt_timeout選項?需要說明),並且我必須重新啓動IIS服務器。我已經確定這是cUrl函數可以讓com凍結。
我已經搜索了幾個月的解決方案,但經過大約20種不同的解決方案之後,我終於明白了。我不知道爲什麼cUrl凍結整個IIS(整個本地主機凍結),我不知道爲什麼它繼續返回,即使我把整個網站複製到另一個COM(它變得更糟)。
當我在2個com上測試這個東西時(見上面),該網站加載非常慢。顯然也是因爲cUrl。
我希望有人能夠闡明發生了什麼,並在可能的情況下提供解決方案。
謝謝你stackoverflow社區。
其他信息
如果它有助於解決這個問題,所有的請求cUrl作者去一個單一的PHP文件上的應用程序層,dbQuery.php,其讀取輸入並加載需要的是MSSQL表頁,獲取或發送任何信息,並返回xml中的mssql結果。 (即時通訊認爲這可能會導致瓶頸,因爲最大的頁面生成37 cUrl調用)。
更新
今早(26/3/2012)我試圖減少捲曲的電話數量,網站性能提高了很多。但凍結仍然發生:\
是否有在Windows登錄? – Stony 2012-03-23 09:02:29
任何消息,如果u意味着httperr.log,沒有,只是一堆Timer_ConnectionIdle – 2012-03-23 09:07:11
的不,我的意思系統日誌unter「我的電腦」 - >右鍵單擊 - >管理和那裏syslogs。如果服務器掛起然後有沒有消息在httperr.log – Stony 2012-03-23 09:12:09