簡體   English   中英

IIS上的Web服務,PHP為FastCGI

[英]Webservice on IIS with PHP as FastCGI

我有使用Zend_Soap創建的PHP Web服務。 在apache或帶有PHP模塊作為CGI的IIS 7上,一切正常。 但是,如果我將PHP配置為FastCGI,則對Web服務的每第二個請求都會導致400 BedRequest響應。

我有以下關於wireshark的錯誤消息通信:

POST /JaR/soapTest/Service.php HTTP/1.1    
Content-Type: text/xml; charset=utf-8    
VsDebuggerCausalityData: uIDPoyo7FNjw0FZJlPkpvI/09dIAAAAA7yLlSSd4sEqSVBHiUG/JW55FahmIOYRAtQ0OUnO49ZoACQAA    
SOAPAction: "http://signia.cz/WebClientCEVO/1.0#QueryByBasicInformation"    
Host: w7pr-xampp-dev:8000    
Content-Length: 971    
Expect: 100-continue    


HTTP/1.1 400 Bad Request    
Content-Type: text/html; charset=us-ascii    
Server: Microsoft-HTTPAPI/2.0    
Date: Thu, 17 Feb 2011 14:03:46 GMT    
Connection: close    
Content-Length: 311    


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">    
<HTML><HEAD><TITLE>Bad Request</TITLE>    
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>    
<BODY><h2>Bad Request</h2>    
<hr><p>HTTP Error 400. The request is badly formed.</p>    
</BODY></HTML>

后來我在iis中創建了跟蹤,並弄清楚,每個第一個調用都成功,而不是第二個failllowing失敗,這導致php-cgi.exe進程重新啟動。 從IIS跟蹤中,我得到以下信息:

MODULE_SET_RESPONSE_ERROR_STATUS 
ModuleName FastCgiModule 
Notification 128 
HttpStatus 500 
HttpReason Internal Server Error 
HttpSubStatus 0 
ErrorCode 2147942401 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode Nesprávná funkce. (0x80070001) 

接下來,我嘗試使用fidler2代理檢查通信本身,但沒有真正的成功。 當我在啟用代理的情況下調用Web服務時,每次調用都會成功。 fidler2還打印出警告,表明我的WS宣布的響應時間長度與實際長度不同(在Apache上,長度很好)。

有誰知道問題可能出在哪里?

檢查您的FastCGI設置。

  1. 打開IIS7管理器
  2. 單擊服務器,然后在“功能視圖”中選擇FastCGI設置
  3. 啟用php-cgi.exe屬性。
  4. 檢查“實例最大請求數”,我的“我的請求數”設置為10000,並且您需要向“集合”屬性中添加內容。

集合對象名稱= PHP_FCGI_MAX_REQUESTS集合對象值= 10000

希望能奏效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM