Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SoapServer持久性随机失败_Php_Soap_Wsdl - Fatal编程技术网

Php SoapServer持久性随机失败

Php SoapServer持久性随机失败,php,soap,wsdl,Php,Soap,Wsdl,我已经创建了soapwsdl服务,它可以正常工作。我添加了两个测试方法——第一个(setX($x))将$this->x设置为$x,第二个(getX())返回$this->x。我的SOAP类的构造函数将$this->x设置为“FAIL”,而客户端代码调用setX(“SUCCESS”) 我已经添加了一些虚拟变量,使它们都是请求-响应类型(单向似乎在某些客户机上有一些奇怪的问题) 好的,它可以工作,客户端调用$s->setX('SUCCESS')和$x=$s->getX(''),以及$x='SUCCE

我已经创建了soapwsdl服务,它可以正常工作。我添加了两个测试方法——第一个(setX($x))将$this->x设置为$x,第二个(getX())返回$this->x。我的SOAP类的构造函数将$this->x设置为“FAIL”,而客户端代码调用setX(“SUCCESS”)

我已经添加了一些虚拟变量,使它们都是请求-响应类型(单向似乎在某些客户机上有一些奇怪的问题)

好的,它可以工作,客户端调用$s->setX('SUCCESS')和$x=$s->getX(''),以及$x='SUCCESS'。正如所料

但为了实现这一点,我必须对客户使用以下选项:

'cache\u wsdl'=>wsdl\u cache\u内存

为什么??我受不了了。对于其他每个选项,它都不起作用-$x='FAIL'(没有持久性)

好的,它是有效的,那么有什么问题吗?有时候,是的,有时候不管用。代码随机返回“FAIL”(因为持久性被破坏)。当它开始返回“FAIL”时,它会继续这样做。您可以启动另一个浏览器,它很可能会报告“成功”

现在是最奇怪的部分。让我们使用一个浏览器。让我们重复以下步骤:启动浏览器,检查代码输出,直到返回“FAIL”。现在,按Ctrl+R键大约2秒钟。突然,它成功了,现在它每次都是“成功”了

WTF?!!!我确实仔细检查了会议。在每次创建SoapServer之前都会正确创建会话。每次调用$server->setPersistence(SOAP\u PERSISTENCE\u会话)时。而且它只在“大部分时间”有效——这使得它完全无用

有什么线索吗

PS:生成并缓存我的服务WSDL。我已经将sleep(1)添加到WSDL生成器中,并对客户机代码进行了基准测试。它似乎没有重新生成WSDL(以大约10ms结束,而不是1010ms结束)。使WSDL缓存失效(TTL设置为1)不会使持久性工作,但在浏览器中按住Ctrl+R会使持久性工作

PS2:WSDL生成器、SOAP类和测试客户端位于3个不同的文件中。WSDL类实际上启动服务器。它是从包含SOAP类(index.php)的文件中调用的

PS3:我删除了.htaccess,它不应该破坏任何东西,我删除了一些未使用的文件和代码,然后砰的一声——现在它可以在任何类型的wsdl_缓存中随时工作!我不知道那是什么,你说呢?可能是Apache服务器内部问题。我再也不能复制它了。如果您遇到类似的问题,我的建议是删除.htaccess并尝试重新启动Apache。问题发生在清晨/深夜-我不确定,但我认为cron当时做了一些密集的备份任务。也许强制重新加载告诉Linux放松后台任务,并将更多资源放在Apache和PHP上——这可以解释奇怪的Ctrl+R行为


更新:它仍然随机失败!大多数情况下都能正常工作,但我不能依赖此功能。(使用不同的服务、不同的客户端,但仍然是同一台服务器进行测试)。

文本太多,请使用一些代码格式将其分解?:)