#42010 [Opn]: SOAP call returns null when script is executed twice simultaneously

From: Date: Mon, 16 Jul 2007 15:37:26 +0000
Subject: #42010 [Opn]: SOAP call returns null when script is executed twice simultaneously
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-115114@lists.php.net to get a copy of this message
ID: 42010 User updated by: alexander at abee dot de Reported By: alexander at abee dot de Status: Open Bug Type: SOAP related Operating System: Windows XP SP2 PHP Version: 5.2.3 New Comment: Here are the results as they appear in the browser (just to help you as the original post is not quite readable): Expected result: (executed once) ---------------- http://www.abee.de/php/soap/expected.html Actual result: (executed while script is already running) ---------------- http://www.abee.de/php/soap/actual.html Previous Comments: ------------------------------------------------------------------------ [2007-07-16 15:25:15] alexander at abee dot de Description: ------------ I wrote a very simple webservice using Axis2 in Java and deployed it using Apache Tomcat. The soap service contains just two functions, dummy and dummy2. Both functions just sleep for a second and then return an integer (42 and 43). When I execute the php client code below once, the output is as expected ($v1 is 42 and $v2 is 43) but when I hit reload before both calls are finished I only get a return value from the second call although "__getLastResponse()" returns a valid xml document which contains the expected result. It looks like the parsing of the xml response doesn't work correctly when multiple threads are running. Strangely this doesn't happen when I call the same method twice (ie. dummy and then dummy again in the same script) - then I get the same value in $v1 and $v2. As __getLastResponse() return the correct xml response I assume this is a php bug and not an Axis2 bug. I tried several versions of PHP including 5.1.2.2, 5.2.3 and the latest snapshot - all with the same result. Reproduce code: --------------- <?php function printResult($result, $soap) { print "<pre>\n"; print "Result :\n"; var_dump($result); print "\n"; print "Request :\n".htmlspecialchars($soap->__getLastRequest()) ."\n"; print "Response:\n".htmlspecialchars($soap->__getLastResponse())."\n"; print "</pre><br>"; } $soap = new SoapClient('http://127.0.0.1:8080/axis2/services/WebhandlerService?wsdl', array('trace' => 1)); $v1 = $soap->dummy(array('v' => '4')); printResult($v1, $soap); $v2 = $soap->dummy2(array('v' => '5')); printResult($v2, $soap); ?> Expected result: ---------------- This is the result I expect and which I get on the first call of the php script: <pre> Result : object(stdClass)#2 (1) { ["return"]=> int(42) } Request : &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:ns1=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:dummy&gt;&lt;ns1:v&gt;4&lt;/ns1:v&gt;&lt;/ns1:dummy&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; Response: &lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;soapenv:Body&gt;&lt;ns:dummyResponse xmlns:ns=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;ns:return&gt;42&lt;/ns:return&gt;&lt;/ns:dummyResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt; </pre><br><pre> Result : object(stdClass)#3 (1) { ["return"]=> int(43) } Request : &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:ns1=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:dummy2&gt;&lt;ns1:v&gt;5&lt;/ns1:v&gt;&lt;/ns1:dummy2&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; Response: &lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;soapenv:Body&gt;&lt;ns:dummy2Response xmlns:ns=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;ns:return&gt;43&lt;/ns:return&gt;&lt;/ns:dummy2Response&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt; </pre><br> Actual result: -------------- This is the result I get when I hit the reload button twice: <pre> Result : NULL Request : &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:ns1=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:dummy&gt;&lt;ns1:v&gt;4&lt;/ns1:v&gt;&lt;/ns1:dummy&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; Response: &lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;soapenv:Body&gt;&lt;ns:dummy2Response xmlns:ns=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;ns:return&gt;42&lt;/ns:return&gt;&lt;/ns:dummy2Response&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt; </pre><br><pre> Result : object(stdClass)#2 (1) { ["return"]=> int(43) } Request : &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:ns1=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:dummy2&gt;&lt;ns1:v&gt;5&lt;/ns1:v&gt;&lt;/ns1:dummy2&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; Response: &lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;soapenv:Body&gt;&lt;ns:dummy2Response xmlns:ns=&quot;http://webhandler.zmi.de/xsd&quot;&gt;&lt;ns:return&gt;43&lt;/ns:return&gt;&lt;/ns:dummy2Response&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt; </pre><br> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=42010&edit=1

« previous php.bugs (#115114) next »