I have a SOAP server that is capable of accepting multiple SOAP requests at once, and can process them simultaneously.
If I create a basic SOAP client PHP script to make a request, and run this script multiple times simultaneously on different machines, the requests appear to be queued on the server and are only dealt with one by one rather than being processed concurrently.
Is there anything in Apache/PHP/SOAP that could cause this behaviour?
I appreciate this might be a little obscure, so I’m mainly wondering if anyone has come across this before and what the solution was. I’m stumped.
The SOAP call looks like the following:
$client = new SoapClient($config['parsingWSDL'],array('trace' => FALSE, 'exceptions' => TRUE));
$return = $client->__soapCall("ProcessCV",array($args));
There’s no reason in
SoapClientthat would make seperate instances (every request is a new one…) wait on each other. However, on the client side an HTTPKeepAlivemight be a problem if it want te recycle the same connection, and on the server side using sessions with the same identifier would also block until a lock is released (so, in that case, close a session as soon as possible withsession_write_close()instead of keeping it open.The rest depends on what your SoapServer actually does, SQL queries may be waiting for locks, or any other locking that might be done by your
ProcessCVmay be the cause.