Thread: [PHP-SOAP-DEV] 0.1.1 compiles as dso.
Status: Alpha
Brought to you by:
rodif_bl
From: Andrey H. <ahr...@ic...> - 2002-05-02 23:32:44
|
Good news. I've succeeded to compile the soap extension in the libphp4.so and the example with hello_world_client.php and hello_world_server.php is working - no failure like before. I only decompressed in the ext directory, then ./buildconf and after that edited my config.nice to add '--enable-soap' \ . I waited for errors on the make but no one appeared. hello_world_client.php <?php error_reporting(E_ALL); $hello = new SoapObject("http://192.168.1.40/hello_world_server.php", "urn:HelloWord"); echo $hello->hello_soap("alala"); //var_dump($hello); //var_dump(get_class_methods('SoapServer')); ?> <?php $server = new SoapServer("urn:HelloWord"); $server->addfunction("hello_soap"); $server->handle(); function hello_soap($message){ return "PHP-SOAP says ($message)"; } ?> Tommorow I'll some simple benchmarks. Brad, look here some some info about config.m4 unless you know that. http://php.net/manual/en/zend.build.php Andrey |
From: brad l. <rod...@ya...> - 2002-05-03 02:18:16
|
You built php-soap statically. This has always worked. What i mean as dso is when you product libsoap.so and use ither dl() or chnage the phpconfig to load php-soap. Using the phpize script i think they call it "self contained extensions". let me know how your benchmarks go. I am currently trying to track down a segfault problem on linux. Tell me if you get it. Its kinda random. -brad --- Andrey Hristov <ahr...@ic...> wrote: > Good news. I've succeeded to compile the soap extension in the libphp4.so > and the example with hello_world_client.php and hello_world_server.php is > working - no failure like before. I only decompressed in the ext directory, > then ./buildconf and after that edited my config.nice to add '--enable-soap' > \ . I waited for errors on the make but no one appeared. > > > hello_world_client.php > <?php > error_reporting(E_ALL); > $hello = new SoapObject("http://192.168.1.40/hello_world_server.php", > "urn:HelloWord"); > echo $hello->hello_soap("alala"); > //var_dump($hello); > //var_dump(get_class_methods('SoapServer')); > ?> > > <?php > $server = new SoapServer("urn:HelloWord"); > $server->addfunction("hello_soap"); > $server->handle(); > > function hello_soap($message){ > return "PHP-SOAP says ($message)"; > } > ?> > > Tommorow I'll some simple benchmarks. > > Brad, look here some some info about config.m4 unless you know that. > http://php.net/manual/en/zend.build.php > > Andrey > > > > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download mirrors. We supply > the hardware. You get the recognition. Email Us: ban...@so... > _______________________________________________ > Phpsoaptoolkit-development mailing list > Php...@li... > https://lists.sourceforge.net/lists/listinfo/phpsoaptoolkit-development __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: Andrey H. <ahr...@ic...> - 2002-05-03 13:55:29
|
Ok. I realized. You meant dl('php_soap.so'); I've done some benchmarks this night but due to problems with my 2.5 years old windows 95 install I had no way to connect and send the results. I've also noticed the problem. See the results. There you can see that 12 errors on about 3600 request. Here are the results. I've no other suitable for mass testing tool - only ab. I did 3 benchmarks using the 'ab' tool (v. 1.3d) 1)Benchmarking PHP-SOAP extention: client script: hello_world_client.php <?php echo microtime()."<br>\n"; $hello = new SoapObject("http://192.168.1.140/hello_world_server.php", "urn:HelloWord"); $hello->hello_soap("alala"); echo microtime()."<br>\n"; ?> server script: hello_world_server.php <?php $server = new SoapServer("urn:HelloWord"); $server->addfunction("hello_soap"); $server->handle(); function hello_soap($message){ return "PHP-SOAP says ($message)"; } ?> Results: Concurrency Level: 5 Time taken for tests: 60.004 seconds Complete requests: 3645 Failed requests: 12 (Connect: 0, Length: 12, Exceptions: 0) Broken pipe errors: 0 Total transferred: 1057608 bytes HTML transferred: 189384 bytes Requests per second: 60.75 [#/sec] (mean) Time per request: 82.31 [ms] (mean) Time per request: 16.46 [ms] (mean, across all concurrent requests) Transfer rate: 17.63 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 3.4 0 63 Processing: 14 81 70.1 55 432 Waiting: 1 81 70.2 55 432 Total: 14 82 70.0 56 432 Percentage of the requests served within a certain time (ms) 50% 56 66% 98 75% 127 80% 144 90% 185 95% 222 98% 263 99% 283 100% 432 (last request) 2)Benchmarking XMLRPC extension. Mix of compiled routines and userspache functions(socket openings). client script: <?php require 'link_to_defs.php'; require SITE_LIB.'xmlrpc-utils.php'; echo microtime()."<br>\n"; $some = xu_rpc_http("fub",array(array('one'=>"someone"),"like","you"), SITE_DOMAIN, SITE_PATH.'server.php',80,0);// SITE_DOMAIN is 192.168.1.1.40 & SITE_PATH is "/" echo microtime()."<br>\n"; ?> server script: <?php require 'link_to_defs.php'; require SITE_LIB."xmlrpc-utils.php"; function greeting_func($method_name, $params, $app_data) { $name = $params[0]; return array("hello $name. How are you today?"); } $xmlrpc_server = xmlrpc_server_create(); if($xmlrpc_server) { // register methods if(!xmlrpc_server_register_method($xmlrpc_server, "greeting", "greeting_func")) { die("<h2>method registration failed.</h2>"); } $request_xml = $HTTP_RAW_POST_DATA; $foo = xmlrpc_server_call_method($xmlrpc_server, $request_xml, $response, array(output_type => "xml")); xu_server_send_http_response($foo); $success = xmlrpc_server_destroy($xmlrpc_server); } ?> Results: Concurrency Level: 5 Time taken for tests: 60.082 seconds Complete requests: 1392 Failed requests: 0 Broken pipe errors: 0 Total transferred: 403970 bytes HTML transferred: 72436 bytes Requests per second: 23.17 [#/sec] (mean) Time per request: 215.81 [ms] (mean) Time per request: 43.16 [ms] (mean, across all concurrent requests) Transfer rate: 6.72 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.5 0 11 Processing: 41 215 92.6 211 746 Waiting: 41 215 92.6 210 745 Total: 41 215 92.7 211 753 Percentage of the requests served within a certain time (ms) 50% 211 66% 245 75% 270 80% 289 90% 332 95% 374 98% 424 99% 495 100% 753 (last request) 3)NuSOAP library - fully user space. client script (I got it from the NuSOAP package): nusoap_client.php: <?php echo microtime()."<br>\n"; require_once('nusoap.php'); $parameters = array('name'=>'dietrich'); $soapclient = new soapclient('http://192.168.1.140/nusoap_server.php'); $soapclient->call('hello',$parameters); echo microtime()."<br>\n"; ?> server script: <?php require_once('nusoap.php'); $s = new soap_server; $s->register('hello'); function hello($name){ if($name == ''){ return new soap_fault('Client','','Must supply a valid name.'); } return "hello $name!"; } $s->service($HTTP_RAW_POST_DATA); ?> Results: Concurrency Level: 5 Time taken for tests: 60.064 seconds Complete requests: 165 Failed requests: 0 Broken pipe errors: 0 Total transferred: 48140 bytes HTML transferred: 8632 bytes Requests per second: 2.75 [#/sec] (mean) Time per request: 1820.12 [ms] (mean) Time per request: 364.02 [ms] (mean, across all concurrent requests) Transfer rate: 0.80 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 1316 1779 153.2 1778 2920 Waiting: 1316 1779 153.1 1778 2919 Total: 1316 1779 153.2 1778 2920 Percentage of the requests served within a certain time (ms) 50% 1778 66% 1804 75% 1860 80% 1871 90% 1951 95% 1973 98% 2061 99% 2120 100% 2920 (last request) CONCLUSIONS: As you may see the SOAP extension is the fastest. It is roughly 3 times faster than XMLRPC and more than 30 times faster than NuSOAP. However PHP-SOAP is in the beggining of its life so it might become slower but might faster. The testing configuration is: Hwd: AMD K6-2/300;96MB RAM PC100;Chaintech AGM2 MB;Fujitsu 4.3GB HDD OS : Linux Mandrake. Kernel 2.4.18. Http server : Apache 1.3.23 (this comes with Mandrake 8.2)/PHP 4.0.2RC2 The testing machine is slow for today's standarts but PHP-SOAP is working fast. K6-2/300 is about 2-3 times slower than PIII/500. Think about new machine at 1.6Ghz. Andrey |
From: brad l. <rod...@ya...> - 2002-05-03 15:25:00
|
This sounds good :).. I did some benchmarks before too.. I did a <? echo "hello world"; ?> vs <? $server = new SoapServer(); $server->handle(); function hello() { return "hello world"; } ?> I don't remember exactly what my resutls were but they weren't far off from each other... like 350 requests vs 400 or 450... I have every intension to keep the base code as fast as possible. Adding wsdl validation and other stuff will slow down the code but for the most part I am going to keep speed in mind at every release. Expecially if you don't use wsdl's.. when you are talking php -> php it will be briliantly fast. Lets not forget what code is easiest to read :) This is another huge part im trying to push. Maybe i can get my benchmarking page functional so we can start posting these benchmarks. I fixed some more bugs last nite stuff having to do with wsdl server binding. And i was serializing the Map type wrong. I am trying to track down a random segfault. Man its pissing me off. I will feel pretty releaved when i get that little bastard. _ brad _ --- Andrey Hristov <ahr...@ic...> wrote: > Ok. I realized. You meant dl('php_soap.so'); > I've done some benchmarks this night but due to problems with my 2.5 years > old windows 95 install I had no way to connect and send the results. I've > also noticed the problem. See the results. There you can see that 12 errors > on about 3600 request. > Here are the results. I've no other suitable for mass testing tool - only > ab. > I did 3 benchmarks using the 'ab' tool (v. 1.3d) > 1)Benchmarking PHP-SOAP extention: > client script: > hello_world_client.php > <?php > echo microtime()."<br>\n"; > $hello = new SoapObject("http://192.168.1.140/hello_world_server.php", > "urn:HelloWord"); > $hello->hello_soap("alala"); > echo microtime()."<br>\n"; > ?> > server script: > hello_world_server.php > <?php > $server = new SoapServer("urn:HelloWord"); > $server->addfunction("hello_soap"); > $server->handle(); > function hello_soap($message){ > return "PHP-SOAP says ($message)"; > } > ?> > Results: > Concurrency Level: 5 > Time taken for tests: 60.004 seconds > Complete requests: 3645 > Failed requests: 12 > (Connect: 0, Length: 12, Exceptions: 0) > Broken pipe errors: 0 > Total transferred: 1057608 bytes > HTML transferred: 189384 bytes > Requests per second: 60.75 [#/sec] (mean) > Time per request: 82.31 [ms] (mean) > Time per request: 16.46 [ms] (mean, across all concurrent requests) > Transfer rate: 17.63 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 3.4 0 63 > Processing: 14 81 70.1 55 432 > Waiting: 1 81 70.2 55 432 > Total: 14 82 70.0 56 432 > > Percentage of the requests served within a certain time (ms) > 50% 56 > 66% 98 > 75% 127 > 80% 144 > 90% 185 > 95% 222 > 98% 263 > 99% 283 > 100% 432 (last request) > > > 2)Benchmarking XMLRPC extension. Mix of compiled routines and userspache > functions(socket openings). > client script: > <?php > require 'link_to_defs.php'; > require SITE_LIB.'xmlrpc-utils.php'; > echo microtime()."<br>\n"; > $some = xu_rpc_http("fub",array(array('one'=>"someone"),"like","you"), > SITE_DOMAIN, SITE_PATH.'server.php',80,0);// SITE_DOMAIN is 192.168.1.1.40 & > SITE_PATH is "/" > echo microtime()."<br>\n"; > ?> > server script: > <?php > require 'link_to_defs.php'; > require SITE_LIB."xmlrpc-utils.php"; > function greeting_func($method_name, $params, $app_data) { > $name = $params[0]; > return array("hello $name. How are you today?"); > } > $xmlrpc_server = xmlrpc_server_create(); > if($xmlrpc_server) { > // register methods > > if(!xmlrpc_server_register_method($xmlrpc_server, "greeting", > "greeting_func")) { > die("<h2>method registration failed.</h2>"); > } > $request_xml = $HTTP_RAW_POST_DATA; > $foo = xmlrpc_server_call_method($xmlrpc_server, $request_xml, $response, > array(output_type => "xml")); > xu_server_send_http_response($foo); > $success = xmlrpc_server_destroy($xmlrpc_server); > } > ?> > Results: > > Concurrency Level: 5 > Time taken for tests: 60.082 seconds > Complete requests: 1392 > Failed requests: 0 > Broken pipe errors: 0 > Total transferred: 403970 bytes > HTML transferred: 72436 bytes > Requests per second: 23.17 [#/sec] (mean) > Time per request: 215.81 [ms] (mean) > Time per request: 43.16 [ms] (mean, across all concurrent requests) > Transfer rate: 6.72 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.5 0 11 > Processing: 41 215 92.6 211 746 > Waiting: 41 215 92.6 210 745 > Total: 41 215 92.7 211 753 > > Percentage of the requests served within a certain time (ms) > 50% 211 > 66% 245 > 75% 270 > 80% 289 > 90% 332 > 95% 374 > 98% 424 > 99% 495 > 100% 753 (last request) > > 3)NuSOAP library - fully user space. > client script (I got it from the NuSOAP package): > nusoap_client.php: > <?php > echo microtime()."<br>\n"; > require_once('nusoap.php'); > $parameters = array('name'=>'dietrich'); > $soapclient = new soapclient('http://192.168.1.140/nusoap_server.php'); > $soapclient->call('hello',$parameters); > echo microtime()."<br>\n"; > ?> > server script: > <?php > require_once('nusoap.php'); > $s = new soap_server; > $s->register('hello'); > function hello($name){ > if($name == ''){ > return new soap_fault('Client','','Must supply a valid name.'); > } > return "hello $name!"; > } > $s->service($HTTP_RAW_POST_DATA); > ?> > Results: > > Concurrency Level: 5 > Time taken for tests: 60.064 seconds > Complete requests: 165 > Failed requests: 0 > Broken pipe errors: 0 > Total transferred: 48140 bytes > HTML transferred: 8632 bytes > Requests per second: 2.75 [#/sec] (mean) > Time per request: 1820.12 [ms] (mean) > Time per request: 364.02 [ms] (mean, across all concurrent requests) > Transfer rate: 0.80 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.0 0 0 > Processing: 1316 1779 153.2 1778 2920 > Waiting: 1316 1779 153.1 1778 2919 > Total: 1316 1779 153.2 1778 2920 > > Percentage of the requests served within a certain time (ms) > 50% 1778 > 66% 1804 > 75% 1860 > 80% 1871 > 90% 1951 > 95% 1973 > 98% 2061 > 99% 2120 > 100% 2920 (last request) > > > CONCLUSIONS: > As you may see the SOAP extension is the fastest. It is roughly 3 times > faster than XMLRPC and more than 30 times faster than NuSOAP. > However PHP-SOAP is in the beggining of its life so it might become slower > but might faster. > The testing configuration is: > Hwd: AMD K6-2/300;96MB RAM PC100;Chaintech AGM2 MB;Fujitsu 4.3GB HDD > OS : Linux Mandrake. Kernel 2.4.18. > Http server : Apache 1.3.23 (this comes with Mandrake 8.2)/PHP 4.0.2RC2 > > The testing machine is slow for today's standarts but PHP-SOAP is working > fast. K6-2/300 is about 2-3 times slower than PIII/500. Think about new > machine at 1.6Ghz. > > > Andrey > === message truncated === __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: Andrey H. <ahr...@ic...> - 2002-05-03 18:05:08
|
Brad, I've downloaded some other web stressing tools to do some other benchmarks. Unfortunately I cannot use MS Web Stress Tool because it runs only on NT 4,5,6 but I've found some Open Source stuff on sourceforge. May be I'll test tonight and post the results after that or tommorow. I'm sorry but I cannot help you about this segfault. Few months ago I tried to write a php extension and had segfaults on extension globals because I didn't knowed that they are treated in special way. I had also segfault on when working with strings - not smart ones. May I ask why you use malloc() instead of emalloc(). I've read int the "Web development with PHP4" and the same info available on php.net and zend.com that this kind of calls should not be performed. Look at the docs at php.net in the section of module writing. malloc() memory survive the after the end of script's life. Isn't here the problem. Andrey ----- Original Message ----- From: "brad lafountain" <rod...@ya...> To: "Andrey Hristov" <ahr...@ic...>; <php...@li...> Sent: Friday, May 03, 2002 6:24 PM Subject: Re: [PHP-SOAP-DEV] some benchmarks. > This sounds good :).. > > I did some benchmarks before too.. > I did a > > <? > echo "hello world"; > ?> > > vs > > <? > $server = new SoapServer(); > $server->handle(); > function hello() > { > return "hello world"; > } > ?> > > I don't remember exactly what my resutls were but they weren't far off from > each other... like 350 requests vs 400 or 450... > > I have every intension to keep the base code as fast as possible. Adding wsdl > validation and other stuff will slow down the code but for the most part I am > going to keep speed in mind at every release. Expecially if you don't use > wsdl's.. when you are talking php -> php it will be briliantly fast. > > Lets not forget what code is easiest to read :) This is another huge part im > trying to push. > > Maybe i can get my benchmarking page functional so we can start posting these > benchmarks. > > I fixed some more bugs last nite stuff having to do with wsdl server binding. > And i was serializing the Map type wrong. > > I am trying to track down a random segfault. Man its pissing me off. I will > feel pretty releaved when i get that little bastard. > > _ brad _ > |