我的开发环境是nginx+php,准备作一个soap的实验,soapclient和soapserver都是在我的开发机上,用soapclient访问soapserver的时候,总是返回504错误,相同的代码【http://www.jackxiang.com/post/3956/】放到apache+php_module的环境下没有问题。
nginx的错误日志显示,client和server的错误都是fastcgi超时,我一度怀疑是soapserver的问题,soapserver超时不响应,导致了soapclient的超时。
但是我用cli模式执行client,server能正常返回,说明不是soapserver的问题。
用nginx下的client访问apache上的server,正常
用apache下的client访问nginx上的server,正常
我恍然大悟,是不是进程数的问题,先怀疑nginx,后怀疑php-cgi,一查资料,如果用php-cgi -b9000直接器fastcgi的话,同时只能处理一个请求,soapclient和soapserver需要两个进程,soapclient把进程挂 起等soap server返回,但是soapserver等待soapclient释放phpcgi的进程,所以一直都是返回504了。
赶紧打个fpm的补丁,困惑n天的问题解决了。
有人提了个Bug:
https://bugs.php.net/bug.php?id=52922
错误如下:
Fatal error: Uncaught SoapFault exception: [Client] Function ("getError") is not a valid method for this service in /data0/htdocs/center/hello.php:10 Stack trace: #0 /data0/htdocs/center/hello.php(10): SoapClient->__call('getError', Array) #1 /data0/htdocs/center/hello.php(10): SoapClient->getError() #2 {main} thrown in /data0/htdocs/center/hello.php on line 10
nginx的错误日志显示,client和server的错误都是fastcgi超时,我一度怀疑是soapserver的问题,soapserver超时不响应,导致了soapclient的超时。
但是我用cli模式执行client,server能正常返回,说明不是soapserver的问题。
用nginx下的client访问apache上的server,正常
用apache下的client访问nginx上的server,正常
我恍然大悟,是不是进程数的问题,先怀疑nginx,后怀疑php-cgi,一查资料,如果用php-cgi -b9000直接器fastcgi的话,同时只能处理一个请求,soapclient和soapserver需要两个进程,soapclient把进程挂 起等soap server返回,但是soapserver等待soapclient释放phpcgi的进程,所以一直都是返回504了。
赶紧打个fpm的补丁,困惑n天的问题解决了。
有人提了个Bug:
https://bugs.php.net/bug.php?id=52922
错误如下:
Fatal error: Uncaught SoapFault exception: [Client] Function ("getError") is not a valid method for this service in /data0/htdocs/center/hello.php:10 Stack trace: #0 /data0/htdocs/center/hello.php(10): SoapClient->__call('getError', Array) #1 /data0/htdocs/center/hello.php(10): SoapClient->getError() #2 {main} thrown in /data0/htdocs/center/hello.php on line 10
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4580/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2011-8-30 10:49
评论列表