我得到了一个运行良好很长时间的PHP web服务,但在很长一段时间内,它停止了工作,我就是无法让它再次工作。
我得到了一些php页面,在其中我所做的就是定义一个带有函数的类,最后我创建了SoapServer。
它看起来像这个-
class MyClassWS
{
function .....
function ....
}
ini_set("soap.wsdl_cache_enabled", "0");
error_log("Server after ini_set");
$soapserver = new SoapServer("MyWSDL.wsdl");
error_log("Server after new SoapServer");
$soapserver->setClass("MyClassWS");
error_log("Server after setClass");
//error_log(print_r($soapserver->getFunctions()));
try
{
$soapserver->handle();
}
catch(Exception $ex)
{
error_log("Exception!".$ex->getMessage());
}
error_log("Finished Handling",0);
就在$soapserver->handle()之后;代码终止,我在网页上得到一个模糊的"SOAP-ENV:ClientBad Request"结果。
当我从索引页面"require_one"这个页面时,就会发生这种情况,这样我就可以从索引页面调用这个类中定义的函数。
我的猜测是,也许我在WSDL上做得太多了,不知怎么的,它把我的while WebService搞砸了,但我试图找出它的问题所在,但什么都做不到。尤其是因为这个令人讨厌的模糊错误消息,这并没有真正的帮助。
谢谢!
我认为我很好地解决了这个问题,将包括SoapServer的WebService类分离为两个不同的类。
一个只包含带函数的类,另一个包含WebServer并且只引用该类。
通过这种方式,我可以导入带有函数的类,而无需导入SoapServer并触发handle()函数。