Веб-сервис на IIS с PHP как FastCGI - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть веб-сервис PHP, созданный с использованием Zend_Soap. На apache или IIS 7 с модулем PHP в качестве CGI все работает просто отлично. Но если я настраиваю PHP как FastCGI, каждый второй запрос к веб-сервису приводит к ответу 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 и выяснил, что каждый первый вызов завершается успешно, а второй отказывает при сбое, что приводит к перезапуску процесса 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, но безуспешно. Когда я вызываю веб-сервис с включенным прокси-сервером, каждый звонок завершается успешно. fidler2 также выводит предупреждение о том, что объявленная длина ответа от моего WS не совпадает с фактической длиной (в apache длины в порядке).

Кто-нибудь знает, где может быть проблема?

1 Ответ

0 голосов
/ 21 февраля 2011

Проверьте настройки FastCGI.

  1. Откройте диспетчер IIS7
  2. Нажмите на сервере и в представлении функций выберите Настройки FastCGI
  3. Откройте php-cgi.Свойства exe.
  4. Проверьте количество запросов на инстанс, у меня установлено значение 10000, и вам нужно добавить некоторые свойства в свойство Collection.

Имя объекта коллекции = PHP_FCGI_MAX_REQUESTS Значение объекта коллекции =10000

Надеюсь, что работает

...