ID: 41943
Updated by: [EMAIL PROTECTED]
Reported By: simon at connexon dot com
-Status: Assigned
+Status: Feedback
Bug Type: SOAP related
Operating System: Windows Server 2003
PHP Version: 5.2.3
Assigned To: dmitry
New Comment:
I am not able to reproduce this.
I created a simple client that accesses server over HTTPS:
<?php
$client = new SoapClient(NULL,array(
"location"=> "https://tpl/~dmitry/soap/examples/server4.php",
"uri" => "test://"));
echo $client->getQuote("ibm");
?>
and server that sleeps for 15 seconds:
<?php
$quotes = array(
"ibm" => 98.42
);
function getQuote($symbol) {
global $quotes;
sleep(15);
return $quotes[$symbol];
}
//ob_start("ob_gzhandler");
$server = new SoapServer("stockquote1.wsdl");
$server->addFunction("getQuote");
$server->handle();
?>
and I don't see any CPU load:
[EMAIL PROTECTED] CGI-DEBUG]$ time sapi/cli/php
/home/dmitry/public_html/soap/examples/client8.php
98.42
real 0m15.105s
user 0m0.006s
sys 0m0.033s
I also run the same client on Windows looking into "perfmon" and CPU
load was about 0% during waiting.
Please provide a COMPLETE reproducable case (client that access
external SOAP server, or local client and srver), if you like me to fix
the behavior.
Previous Comments:
------------------------------------------------------------------------
[2007-07-13 12:35:25] simon at connexon dot com
How do we do traces?
however I was able to isolate the problem. It's SSL that is causing CPU
spikes. I ran a soap location with HTTP://, then the CPU would "idle"
while it's waiting for a response, however using HTTPS:// the CPU really
goes nuts!
Is this a problem in the core of PHP itself?
------------------------------------------------------------------------
[2007-07-11 07:08:46] [EMAIL PROTECTED]
Could you plese post strace of process or/and call-trace of PHP during
it eats CPU.
------------------------------------------------------------------------
[2007-07-09 20:13:37] simon at connexon dot com
<?
$client = new SoapClient($wsdl_location, $params);
$date_time = date("Y-m-d H:i:s");
$ws_params = array("valAddressMsg" => "aaa");
$this->result = $this->handle->__soapCall("ValA", $ws_params);
if ($debug)
$this->displayMessageInfo();
$this->handleFault($this->result);
?>
When the code gets to "$this->handle->__soapCall..." we recognize the
fact that when PHP is waiting for a soap response the CPU is blocked.
However this is not a good behavior as of we need the CPU to do other
things also.
------------------------------------------------------------------------
[2007-07-09 19:45:35] [EMAIL PROTECTED]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2007-07-09 19:39:46] simon at connexon dot com
Description:
------------
We've been using soap for a while now and noticed that when we send a
soap request and it waits for a response, PHP goes in a sort of loop and
takes CPU load. Our average waiting time is 4 seconds.
A soap call once in a while is ok, because it doesn't take too much CPU
overall. But we noticed that the more we grow, the more CPU it takes, to
a point where we reach often 100% CPU if we do a loop of soap calls.
(All that caused by the waiting time of the soap call!!!).
Reproduce code:
---------------
x
Expected result:
----------------
Would it be possible that PHP goes into an idle mode when it waits for
a soap response instead of taking all the CPU ressources?
Actual result:
--------------
CPU goes crazy when we do too many soap calls in a row (we can do
maximum of 4 soap calls at once, else it would overload the server).
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41943&edit=1