php soap接口交互在nginx上没有值传过来

nai_000 发布于 2013/11/20 13:55
阅读 1K+
收藏 1

各位高手有遇到这种情况吗?就是PHP与其他语言的接口问题

应用php soapserver wsdl 

clent客户端访问 nginx 服务的服务端值传不过去,访问自己电脑的apache的就好使。

服务器上是nginx的服务器,请问这是什么问题啊?最好详细说说,我是这方面的小白

这是代码

客户端:

$client = new SoapClient("http://192.168.1.235/api/api.php?wsdl");
   $arr='55555';
print_r($client->say($arr));
    echo "<br />";
print_r($client->run());
    echo "<br />";

服务端:

require_once("person.class.php");
$video_stream = array('uri' =>'http://192.168.1.25/vms/api/api.php','encoding'=>'utf8');
$vms_server =new SoapServer('person.wsdl',$video_stream);
$vms_server->setClass("person");//注册person类的所有方法
$vms_server->handle();//处理请求

类:

class person
     {
        public function say($arr) 
         { 
                $filename="1.txt";
                $file=file_put_contents($filename, $arr,FILE_APPEND);
                if($arr){
                    return true;
                }else{
                    return false;
                }
         }
         public function run()
         {
             return("i'm running.");
         }
     }

加载中
0
nai_000
nai_000
最好详细点的,好几天了这个问题一直没弄明白
0
nai_000
nai_000

nginx+php的soap问题  

我的开发环境是nginx+php,准备作一个soap的实验,soapclient和soapserver都是在我的开发机上,用soapclient访问soapserver的时候,总是返回504错误,相同的代码放到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天的问题解决了。

网上有篇这样的解决办法不过看不明白啊,也不知道好不好用


0
nai_000
nai_000
nginx配置问题,因为同时发起两个进程,所以再配个端口接收
返回顶部
顶部