2012-03-23 35 views
4

你好計算器人民凍結,我的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)我試圖減少捲曲的電話數量,網站性能提高了很多。但凍結仍然發生:\

+0

是否有在Windows登錄? – Stony 2012-03-23 09:02:29

+0

任何消息,如果u意味着httperr.log,沒有,只是一堆Timer_ConnectionIdle – 2012-03-23 09:07:11

+0

的不,我的意思系統日誌unter「我的電腦」 - >右鍵單擊 - >管理和那裏syslogs。如果服務器掛起然後有沒有消息在httperr.log – Stony 2012-03-23 09:12:09

回答

0

這可能是由於您嘗試使用curl讀取的url可能需要更多時間來加載。因此,請嘗試在瀏覽器中加載相同的網址,並檢查它是否正在加載。

+0

我以前已經把CURLOPT_CONNECTTIMEOUT&CURLOPT_TIMEOUT每個10,它仍然發生 – 2012-04-05 04:43:23

0

我最近把這個網站放在了我客戶端的網頁服務器上,螞蟻的凍結似乎消失了。任何想法爲什麼雖然?

由於這改變了事情,我應該改變這個問題到本地主機cUrl問題?我仍然不知道爲什麼cUrl凍結了我的本地主機,或者爲什麼當我將它放在實際的3層環境中時它消失了。

無論哪種方式,問題解決了...沒有答案:(