phpsoaptoolkit-development Mailing List for PHP Soap (Page 5)
Status: Alpha
Brought to you by:
rodif_bl
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
(21) |
May
(55) |
Jun
(6) |
Jul
(3) |
Aug
(1) |
Sep
(1) |
Oct
(3) |
Nov
(1) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2004 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2006 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(2) |
Jul
(2) |
Aug
(1) |
Sep
(7) |
Oct
(7) |
Nov
(26) |
Dec
(32) |
2009 |
Jan
(9) |
Feb
(13) |
Mar
(14) |
Apr
(20) |
May
(39) |
Jun
(21) |
Jul
(26) |
Aug
(9) |
Sep
|
Oct
|
Nov
|
Dec
(8) |
2010 |
Jan
(10) |
Feb
(9) |
Mar
|
Apr
|
May
(3) |
Jun
(3) |
Jul
|
Aug
(2) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Andrey H. <ahr...@ic...> - 2002-05-06 11:07:53
|
I found the problem. I think that you develop under windows and therefore there are \r\n's at the end of lines. The gcc of my mandrake does not complain about this but the gcc on my dragon linux(glibc2.1, i don't know atm what is the version of gcc) complains. I used "fromdos" and now everything is ok except that I'm donwloading libxml2 because I don't have it in the dragon linux. Andrey ----- Original Message ----- From: "brad lafountain" <rod...@ya...> To: "andrey" <ahr...@ic...> Sent: Saturday, May 04, 2002 11:42 PM Subject: Re: [PHP-SOAP-DEV] server segfault > Is this from the current cvs? > > // brad > --- andrey <ahr...@ic...> wrote: > > Ok. I downloaded and will test it tonight. However I've problem compiling > > libphp4.so with --enable-soap on my notebook(p166/16mb), which is dragon > > linux, glibc2.1, kernel 2.2.16 . gcc complains about 'stray "/" ' (not sure > > but looked like this). I use this computer as webserver and develop under > > win95 on my second machine. If you can compile libphp4.so against glibc2.1 > > (with built xmlrpc and soap within) I'll be very thankful. > > > > Will you explain shortly what was the problem? > > > > Andrey > > > > ----- Original Message ----- > > From: "brad lafountain" <rod...@ya...> > > To: <php...@li...> > > Sent: Saturday, May 04, 2002 7:38 PM > > Subject: [PHP-SOAP-DEV] server segfault > > > > > > > well i think i found the segfault.. i already commited it to cvs. > > > > > > You can d/l it and test it, i can't get to segfault anymore. > > > > > > - Brad > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Yahoo! Health - your guide to health and wellness > > > http://health.yahoo.com > > > > > > _______________________________________________________________ > > > > > > 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: brad l. <rod...@ya...> - 2002-05-05 23:17:37
|
--- phpsurf <ph...@if...> wrote: > I had a quick look to this, and I'm not sure I really understood what's in > your mind in the difference between MAP_CLASS_INSTANCE and MAP_CLASS_CONVERT > ! :) > > my only wish would be, for the class convert, that the convertion methods > are not carried by the class itself but by another class which would just > act as a transformer ... nut maybe that's what you meant ! Yeah... MAP_CLASS_CONVERT would act as a transformer.. and MAP_CLASS_INSTANCE would act on its own class attributes. The MAP_CLASS_CONVERT would just be a class wrapper around the to_xml* and to_zval* functions. and the MAP_CLASS_INSTANCE would have the to_xml* to_zval* defined as member along with other normal methods. So you would acually need an instance of the class. - Brad - > > > > > Basically the difference between MAP_CLASS_INSTANCE and > > MAP_CLASS_CONVERT is > > the instance treats the class as the type thats being converted and the > > class_convert treats the class as just a "conversion" class. > > > > $soap_server->autoMap(true/false); > > > > This will tell the server to "automap" types. Meaning if > > while serializing/deseralizing "someType" and there is an > > existing php class called "someType" then it ill try and call > > the corrisponding functions. > > > > > > I was looking into the domxml extension. The extension will need > > some changes > > for my needs and some other issues that dont currently work right now. > > like: > > > > $xml = new DomElement("asdf"); > > > > doesn't really give you a new DomElement(); > > you have to do: > > > > $xml = new DomElement("asfd"); > > $real_xml = $xml->domelement("asdf"); > > > > it looks like the constructors aren't working. I know how to fix > > them its just > > a matter of getting in the changes. > > > > the extension could still handle the > > to_xml_before() > > and > > to_zval_after() > > with out domxml changes or if domxml isn't even compiled in. > > > > > > - Brad > > > > > > __________________________________________________ > > Do You Yahoo!? > > Yahoo! Health - your guide to health and wellness > > http://health.yahoo.com > > > > _______________________________________________________________ > > > > 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 > > > ______________________________________________________________________________ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > > > _______________________________________________________________ > > 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: phpsurf <ph...@if...> - 2002-05-05 22:21:43
|
I had a quick look to this, and I'm not sure I really understood what's in your mind in the difference between MAP_CLASS_INSTANCE and MAP_CLASS_CONVERT ! :) my only wish would be, for the class convert, that the convertion methods are not carried by the class itself but by another class which would just act as a transformer ... nut maybe that's what you meant ! > > Basically the difference between MAP_CLASS_INSTANCE and > MAP_CLASS_CONVERT is > the instance treats the class as the type thats being converted and the > class_convert treats the class as just a "conversion" class. > > $soap_server->autoMap(true/false); > > This will tell the server to "automap" types. Meaning if > while serializing/deseralizing "someType" and there is an > existing php class called "someType" then it ill try and call > the corrisponding functions. > > > I was looking into the domxml extension. The extension will need > some changes > for my needs and some other issues that dont currently work right now. > like: > > $xml = new DomElement("asdf"); > > doesn't really give you a new DomElement(); > you have to do: > > $xml = new DomElement("asfd"); > $real_xml = $xml->domelement("asdf"); > > it looks like the constructors aren't working. I know how to fix > them its just > a matter of getting in the changes. > > the extension could still handle the > to_xml_before() > and > to_zval_after() > with out domxml changes or if domxml isn't even compiled in. > > > - Brad > > > __________________________________________________ > Do You Yahoo!? > Yahoo! Health - your guide to health and wellness > http://health.yahoo.com > > _______________________________________________________________ > > 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: brad l. <rod...@ya...> - 2002-05-05 15:29:52
|
I have been doing some thining on how to do this... And i think it would be pretty cool if i could incorperate domxml. Standard function handing: $soap_server->map("namespace:type", "to_xml", "to_zval"); function to_xml_before($zval) { return $modified_zval; } function to_xml($zval) { $xmldom_node = new DomElement($zval->name); $xmldom_node->set_content($zval->value); return $xmldom_node; } function to_xml_after($xmldom_node) { $xmldom_node->first_child()->unlink_node(); return $xmldom_node; } ------------- function to_zval_before($xmldom_node) { return $xmldom_node->first_child()->unlink_node(); } function to_zval($xmldom_node) { $zval->data = $xmldom_node->first_child()->get_content(); return $zval; } function to_zval_after($zval) { $zval->connection = db_connect($zval->db, $zval->username, $zval->passwd); - or - unset($zval->unwanted_field); - or - $obj = new OtherObject($zval->value); return $obj; } Class manipulation. $soap_server->map("namespace:type", "class", MAP_CLASS_INSTANCE (default) | MAP_CLASS_CONVERT); MAP_CLASS_INSTANCE: class myType { function to_xml_before() { unset($this->unwanted); } function to_xml() { $xmldom_node = new DomElement($this->name); $xmldom_node->set_content($this->value); return $xmldom_node; } function to_xml_after($xmldom_node) { $xmldom_node->first_child()->unlink_node(); return $xmldom; } function to_zval_before($dom_node) { $xmldom_node->first_child()->unlink_node(); return $xmldom; } function to_zval($xmldom_node) { $this->data = $xmldom_node->get_contents(); } function to_zval_after() { unlink($this->data); } } MAP_CLASS_CONVERT: class myType { function to_xml_before($zval) { return $modified_zval; } function to_xml($zval) { $xmldom_node = new DomElement($zval->name); $xmldom_node->set_content($zval->value); return $xmldom_node; } function to_xml_after($xmldom_node) { $xmldom_node->first_child()->unlink_node(); return $xmldom_node; } function to_zval_before($xmldom_node) { return $xmldom_node->first_child()->unlink_node(); } function to_zval($xmldom_node) { $zval->data = $xmldom_node->first_child()->get_content(); return $zval; } function to_zval_after($zval) { $zval->connection = db_connect($zval->db, $zval->username, $zval->passwd); - or - unset($zval->unwanted_field); - or - $obj = new OtherObject($zval->value); return $obj; } } Basically the difference between MAP_CLASS_INSTANCE and MAP_CLASS_CONVERT is the instance treats the class as the type thats being converted and the class_convert treats the class as just a "conversion" class. $soap_server->autoMap(true/false); This will tell the server to "automap" types. Meaning if while serializing/deseralizing "someType" and there is an existing php class called "someType" then it ill try and call the corrisponding functions. I was looking into the domxml extension. The extension will need some changes for my needs and some other issues that dont currently work right now. like: $xml = new DomElement("asdf"); doesn't really give you a new DomElement(); you have to do: $xml = new DomElement("asfd"); $real_xml = $xml->domelement("asdf"); it looks like the constructors aren't working. I know how to fix them its just a matter of getting in the changes. the extension could still handle the to_xml_before() and to_zval_after() with out domxml changes or if domxml isn't even compiled in. - Brad __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: phpsurf <ph...@if...> - 2002-05-05 11:10:46
|
> -----Original Message----- > From: brad lafountain [mailto:rod...@ya...] > Sent: dimanche 5 mai 2002 07:24 > To: phpsurf > Cc: php...@li... > Subject: RE: [PHP-SOAP-DEV] WSDLGenerator > > > > --- phpsurf <ph...@if...> wrote: > > right, we are talking about several things here ! :) > > > > 1- wsdl auto-generation: > > ok, good idea, I have no other experience of this (only played with java > > implementation which is type specific ...) > > Yeah this topic is going to be hard. Im going to try and > implements something > here. Its not going to be as good as the java stuff becuase of > the type stuff. > but maybe it can adventuall be useful. > > Im not sure if you know this but you can currently bind your service to a > existing wsdl. > <? > $server = new SoapServer(...); > $server->bind("some_wsdl.wsdl"); > $server->handle(); > ?> > > This does a little magic. If your wsdl defines types in the schema part. > php-saop will try and "convert" the type automatically according > to the type in > the wsdl. > > Say the wsdl defines > <message name="getShort"> > <part name="Result" type="xsd:short" /> > </message> > > and the php function > > function getShort() > { > return "123"; > } > > php-soap would return the message with the xsd:short type not the > xsd:string. > again this is only done when binding to a wsdl. > > This also works with complex types. > <complexType name="someType"> > <all> > <element name="short" type="xsd:short" /> > <element name="string" type="xsd:string" /> > </all> > </complexType> > > <message name="getType"> > <part name="Result" type="someType" /> > </message> > > function getType() > { > $ret->string = "some string"; > $ret->short = "123"; > $ret->double 1.3; > return $ret; > } > > php-soap will return the type as someType and add string as xsd:string and > short as xsd:short but leave out the double. > > I think this is pretty flexable and powerfull, but this > functionality is still > pretty experimental. I need to get how that works documented. > That also works > on the client side. > > $soap = new SoapObject("somewsdl.wsdl"); > $soap->echoShort("1234"); Right, this is already a pretty good job ! What I meant is just the ability to override this default serialization process with some custom handler. This is specially usefull in complex services when you want to work with some kind of beans ... because you can add some controls, or actions like countings or locking, or adding framework-level parameters like for security or debug ... when passing your objects to the soap service. I've been working on a quite big project using apache soap and this kind of stuff has been very very useful because it let us implement a complex framework above the apache soap to do all the technical stuff, and then developers only had to deal with the business aspect of the service ... > > > What i did just add today is the abilty to do this. > http://server.com/some_php_service.php?WSDL (.net style) > and if there is a wsdl bound to that service it will output the wsdl. > don't seen it yet ... gonna have a look > > > > 2- php/soap serialization/deserialization: > > indeed wsdl defines the soap type of a soap parameter, but my > point here is: > > how to determine the corresponding php type ? > > As they do in the Apache java implementation of soap, we could have a > > mapping table that would associate each soap type with a php > type ... and we > > could also be able to define our own serializer/deserializer > function ... > > something that would tell php_soap (for a specific instance of > soap server): > > "every time you receive a soap type 'mySchemaSoapType' (as > defined is the > > schema part of the wsdl), deserialize it into the following php type > > 'myPhpClass' (which would be an existing class, or any php type code), > > using the deserializer handler > 'mySoapToPhpDeserializerFunction' (wich is an > > existing function)" > > > > this definition could run-time on client side and setup (a specific xml > > document/ or comments in the code) on server side > > or simply run-time on both client and server side ... > > for example, one can define a bean_serializer which will only > send via soap > > attributes of an object that have a getter method ... > > > > maybe you could have a look at the Apache Implementation of > Soap in Java to > > see how they handled this problematic ... > > I think their aproach is very attractive because it really let > the developer > > do what he wants with the soap implementation ... this is very > powerfull ! > > http://xml.apache.org/soap/index.html > > If the above small sample made any sence. the php-to-xml can be > handled by > using wsdls but the xml-to-php only seralizes to stdobjects and > standard php > types. this is where I suggested a mapping table (eg: the soap mapping registry in apache soap) to define the right php class for a specific xsd type. > A api would be pretty nice for this functionality. I do > use apache soap > i haven't go into the custom seriazlation. > I did mostly use bean serialization and complex types with several actions in the getter/setter methods. this could be really good stuff to have this :) maybe you can even find something better than apache did ... > - Brad > ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: brad l. <rod...@ya...> - 2002-05-05 05:25:36
|
Oh i forgot to mention. I also made these functions only available in debug mode. Because this does hurt performance. - Brad --- brad lafountain <rod...@ya...> wrote: > Yeah i realized i need request and response after i released it.. > > The current cvs has __getLastRequest() and __getLastResponse() and it got > rid > of __getLastMessage(). > > - Brad > --- phpsurf <ph...@if...> wrote: > > by the way, like you added __getLastMessage() to get the last request send > > by the client, can you also add a method to get the last response received > > by the server ? something like __getLastResponse() or whatever you want :) > > > > thx > > > > > -----Original Message----- > > > From: php...@li... > > > [mailto:php...@li...]On Behalf > > > Of brad lafountain > > > Sent: jeudi 2 mai 2002 07:05 > > > To: php...@li... > > > Cc: ahr...@ic... > > > Subject: [PHP-SOAP-DEV] New Release php-soap_0.1.1 > > > > > > > > > Ok i have put out a new release. > > > I know that that was quick.. I havn't added that much but i realized i > did > > > something that was't good. So i suggest who ever is using it use the new > > > update. > > > > > > What this does... > > > > > > Some handing stuff.. > > > The server useto automatically send a fault when > > > always_populate_raw_post_data > > > was off. Now it will check for HTTP_RAW_POST_DATA first then check the > ini > > > setting and if it's off it will finally send the fault saying the > > > ini setting > > > should be on. > > > > > > The client useto deny any request that doesn't have the > > > Content-Type: text/xml. > > > I changed it so that it will check the header first if its not > > > xml it will read > > > the first 5 bytes and see if its xml ("<?xml"). If that is true > > > it will try and > > > process the request normall. > > > > > > By default the server automatically exposed all methods available > > > to php. I > > > changed it so that it doesn't expose any. You now will have to > > > tell the server > > > every function you want exposed. > > > See... > > > http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/documentation/ > > classes/soapserver/addfunction/ > > > > You can still expose all methods by calling > > $soap_server->addFunction(SOAP_FUNCTIONS_ALL); > > but its not default anymore.. > > > > New Features.. > > On the server side you can now return custom faults.. > > > > function do_something($data) > > { > > if(!$data) > > return new SoapFault(string "fault_string" [, string "fault_code"] [, > > mixed > > "details] [, "fault_actor]); > > > > return "thanks for suppling $data"; > > } > > > > On the client side you can now see the seralized soap call > > > > $client->some_soap_call(); > > echo $client->__getLastMessage(); > > > > The big reason for the patch already.. > > I added php stream handling code for the upcomming streams in php-4.3.0. > > When > > i did i change php_close_socket(socket) to close(socket). So all of you > > client > > calls are keeping a connection to the server. So if you are calling > multiple > > calls to the same server you will notice a huge performance difference. > > > > And i fixed a few mem leaks. > > > > And the config.m4 file in the tar ball won't be a tar ball again. > > > > A windows binary and tarballs will be posted shortly > > > > Enjoy.. keep the feed back comming. > > > > -Brad > > > > > > __________________________________________________ > > Do You Yahoo!? > > Yahoo! Health - your guide to health and wellness > > http://health.yahoo.com > > > > _______________________________________________________________ > > > > 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 > > > > > > > ______________________________________________________________________________ > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > __________________________________________________ > Do You Yahoo!? > Yahoo! Health - your guide to health and wellness > http://health.yahoo.com > > _______________________________________________________________ > > 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: brad l. <rod...@ya...> - 2002-05-05 05:23:58
|
--- phpsurf <ph...@if...> wrote: > right, we are talking about several things here ! :) > > 1- wsdl auto-generation: > ok, good idea, I have no other experience of this (only played with java > implementation which is type specific ...) Yeah this topic is going to be hard. Im going to try and implements something here. Its not going to be as good as the java stuff becuase of the type stuff. but maybe it can adventuall be useful. Im not sure if you know this but you can currently bind your service to a existing wsdl. <? $server = new SoapServer(...); $server->bind("some_wsdl.wsdl"); $server->handle(); ?> This does a little magic. If your wsdl defines types in the schema part. php-saop will try and "convert" the type automatically according to the type in the wsdl. Say the wsdl defines <message name="getShort"> <part name="Result" type="xsd:short" /> </message> and the php function function getShort() { return "123"; } php-soap would return the message with the xsd:short type not the xsd:string. again this is only done when binding to a wsdl. This also works with complex types. <complexType name="someType"> <all> <element name="short" type="xsd:short" /> <element name="string" type="xsd:string" /> </all> </complexType> <message name="getType"> <part name="Result" type="someType" /> </message> function getType() { $ret->string = "some string"; $ret->short = "123"; $ret->double 1.3; return $ret; } php-soap will return the type as someType and add string as xsd:string and short as xsd:short but leave out the double. I think this is pretty flexable and powerfull, but this functionality is still pretty experimental. I need to get how that works documented. That also works on the client side. $soap = new SoapObject("somewsdl.wsdl"); $soap->echoShort("1234"); What i did just add today is the abilty to do this. http://server.com/some_php_service.php?WSDL (.net style) and if there is a wsdl bound to that service it will output the wsdl. > > 2- php/soap serialization/deserialization: > indeed wsdl defines the soap type of a soap parameter, but my point here is: > how to determine the corresponding php type ? > As they do in the Apache java implementation of soap, we could have a > mapping table that would associate each soap type with a php type ... and we > could also be able to define our own serializer/deserializer function ... > something that would tell php_soap (for a specific instance of soap server): > "every time you receive a soap type 'mySchemaSoapType' (as defined is the > schema part of the wsdl), deserialize it into the following php type > 'myPhpClass' (which would be an existing class, or any php type code), > using the deserializer handler 'mySoapToPhpDeserializerFunction' (wich is an > existing function)" > > this definition could run-time on client side and setup (a specific xml > document/ or comments in the code) on server side > or simply run-time on both client and server side ... > for example, one can define a bean_serializer which will only send via soap > attributes of an object that have a getter method ... > > maybe you could have a look at the Apache Implementation of Soap in Java to > see how they handled this problematic ... > I think their aproach is very attractive because it really let the developer > do what he wants with the soap implementation ... this is very powerfull ! > http://xml.apache.org/soap/index.html If the above small sample made any sence. the php-to-xml can be handled by using wsdls but the xml-to-php only seralizes to stdobjects and standard php types. A api would be pretty nice for this functionality. I do use apache soap i haven't go into the custom seriazlation. - Brad > > > > -----Original Message----- > > From: brad lafountain [mailto:rod...@ya...] > > Sent: mercredi 1 mai 2002 00:41 > > To: phpsurf; php...@li... > > Subject: RE: [PHP-SOAP-DEV] WSDLGenerator > > > > > > > > --- phpsurf <ph...@if...> wrote: > > > > > > > -----Original Message----- > > > > When php-soap starts generating wsdl's it is going to be soley > > > > dependant on the > > > > user documenting their code. phpdoc style. Otherwise the wsdl > > > > generator can't > > > > know types and parameters. > > > > Well I think we are talking about two differnt things here. > > 1) wsdl generation.. > > > > The wsdl has definintions about parameter types and return > > types. We all know > > php isn't type specfic. So for php-soap to be able to > > auto-generate wsdls it > > needs to know the types of parameters and the return values. So > > was looking > > into phpdoc and how to use that. > > > > /** > > Short Desc > > > > Long Desc > > > > @param name string description > > @param value string description > > @returns string description > > */ > > function do_something($name, $value) > > { > > return $name . $value; > > } > > > > if someone documents their code then php-soap can parse that file > > and pull the > > necessary information and genearte a wsdl from that. but that > > assumes that the > > developers are going to write their docuemntation correctly. Or i > > can write a > > script that will help the user guide thru a process of generating > > a wsdl. the > > "wizzard" will prompt them for parameters and return types. > > > > 2) php serialization / soap serialziation to and from native php and soap. > > Currently there is no way to override the way that it will > > seralize types. I do > > plan on creating an api to allow the users both on the client and > > server to > > override serialization. I havn't thought of a good way of doing > > it yet. But for > > the most part im pretty sure you wont need this. > > The way it currently works right now is. > > your wsdl defines this > > <schema> > > <s:element name="someObject"> > > <s:complexType> > > <s:element type="s:string" name="memberOne"> > > <s:element type="s:string" name="memberTwo"> > > </s:complexType> > > </s:element> > > </schema> > > and you have this code > > $server = new SoapServer(); > > $server->addFunction("returnSomeObject"); > > $server->bind("/wsdl/location/test.wsdl"); > > $server->handle(); > > > > function returnSomeObject() > > { > > $ret->memberOne = 'test'; > > $ret->memberTwo = 'test'; > > $ret->memberThree = 'test'; > > $ret->memberFour = 'test'; > > return ret; > > } > > > > now anytime someone invokes returnSomeObject it will only serialize > > memberOne and memberTwo and leave out memberFour and memberFive. > > and again with types it will auto convert types to the correct values. > > and with i don't know if you have seen SoapVar. But you can do > > something like > > this > > > > function getDateTime() > > { > > return new SoapVar(time(), XSD_DATETIME); > > } > > > > and that will serialize to the correct date time string that xsd defines. > > > > take alook at > > > > http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/documentation/ > classes/soapvar/constructor/ > > > Does this make any sence. > > > If i still need to add a way to override serialziation then i will add it. I > just need to come up with a way to give the user a way to define it. > > > - brad > > > > > > are you talking about, for example, object creation from soap values, I > mean > > : how to transform a SoapValue into the apropriate PhpClass/Type ? > > > > I've been working a litle with the java Apache Soap implementation ... > > and they use, on the client side some kind of mapping table which is a > > property of each SoapClient. > > > > and on the server side, they use an xml file called "deployment > descriptor" > > to describe the java properties of the web services available on the > server. > > I know this server side on .Net is in the code comments likewhat you > suggest > > ... > > > > indeed, it's not really a question :) > > I just wanted to know your thinking about that ... > > > > > > > ____________________________________________________________________________ > __ > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > > _______________________________________________ > > 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 > > > ______________________________________________________________________________ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download mirrors. We supply > the hardware. You get the recognition. Email Us: ban...@so... > _______________________________________________ > === message truncated === __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: brad l. <rod...@ya...> - 2002-05-05 04:56:35
|
Yeah i realized i need request and response after i released it.. The current cvs has __getLastRequest() and __getLastResponse() and it got rid of __getLastMessage(). - Brad --- phpsurf <ph...@if...> wrote: > by the way, like you added __getLastMessage() to get the last request send > by the client, can you also add a method to get the last response received > by the server ? something like __getLastResponse() or whatever you want :) > > thx > > > -----Original Message----- > > From: php...@li... > > [mailto:php...@li...]On Behalf > > Of brad lafountain > > Sent: jeudi 2 mai 2002 07:05 > > To: php...@li... > > Cc: ahr...@ic... > > Subject: [PHP-SOAP-DEV] New Release php-soap_0.1.1 > > > > > > Ok i have put out a new release. > > I know that that was quick.. I havn't added that much but i realized i did > > something that was't good. So i suggest who ever is using it use the new > > update. > > > > What this does... > > > > Some handing stuff.. > > The server useto automatically send a fault when > > always_populate_raw_post_data > > was off. Now it will check for HTTP_RAW_POST_DATA first then check the ini > > setting and if it's off it will finally send the fault saying the > > ini setting > > should be on. > > > > The client useto deny any request that doesn't have the > > Content-Type: text/xml. > > I changed it so that it will check the header first if its not > > xml it will read > > the first 5 bytes and see if its xml ("<?xml"). If that is true > > it will try and > > process the request normall. > > > > By default the server automatically exposed all methods available > > to php. I > > changed it so that it doesn't expose any. You now will have to > > tell the server > > every function you want exposed. > > See... > > http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/documentation/ > classes/soapserver/addfunction/ > > You can still expose all methods by calling > $soap_server->addFunction(SOAP_FUNCTIONS_ALL); > but its not default anymore.. > > New Features.. > On the server side you can now return custom faults.. > > function do_something($data) > { > if(!$data) > return new SoapFault(string "fault_string" [, string "fault_code"] [, > mixed > "details] [, "fault_actor]); > > return "thanks for suppling $data"; > } > > On the client side you can now see the seralized soap call > > $client->some_soap_call(); > echo $client->__getLastMessage(); > > The big reason for the patch already.. > I added php stream handling code for the upcomming streams in php-4.3.0. > When > i did i change php_close_socket(socket) to close(socket). So all of you > client > calls are keeping a connection to the server. So if you are calling multiple > calls to the same server you will notice a huge performance difference. > > And i fixed a few mem leaks. > > And the config.m4 file in the tar ball won't be a tar ball again. > > A windows binary and tarballs will be posted shortly > > Enjoy.. keep the feed back comming. > > -Brad > > > __________________________________________________ > Do You Yahoo!? > Yahoo! Health - your guide to health and wellness > http://health.yahoo.com > > _______________________________________________________________ > > 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 > > > ______________________________________________________________________________ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: phpsurf <ph...@if...> - 2002-05-05 01:17:11
|
to help you on that bug : return new SoapFault("my error message !"); makes PHP crash; but return new SoapFault("my error message !", null, null, null); seems to work fine ... some problem with the default values, i guess ... > -----Original Message----- > From: php...@li... > [mailto:php...@li...]On Behalf > Of phpsurf > Sent: dimanche 5 mai 2002 03:16 > To: brad lafountain; php...@li... > Subject: RE: [PHP-SOAP-DEV] Custom Faults > > > well ... > I've just restored my test scripts and added some new custom errors after > installing the last release 0.1.1, and > they don't work ! > return new SoapFault("my error message !"); > makes PHP crash ! :( > > (working on Windows 2000 + Apache 1.23 + PHP 4.2.0 + Php_Soap 0.1.1) > > > -----Original Message----- > > From: php...@li... > > [mailto:php...@li...]On Behalf > > Of brad lafountain > > Sent: jeudi 2 mai 2002 05:21 > > To: phpsurf; php...@li... > > Subject: RE: [PHP-SOAP-DEV] Custom Faults > > > > > > > > --- phpsurf <ph...@if...> wrote: > > > well, it sounds good ... > > > new SoapFault ("faultstring", ["faultcode", ]["faultactor", > > ]["details"]) > > > > I am implementing this now... > > > > I think i will do.. > > new SoapFault ("faultstring", ["faultcode", ]["details", > ]["faultactor"]) > > or > > new SoapFault ("faultstring", ["details", ]["faultcode", > ]["faultactor"]) > > > > What do you think... > > > > The reason for this is i think people will use details more than > > they will use > > actor.... > > > > > > > > > > but maybe, you could take advantage from waiting for the new exception > > > system in ZendEngine2 ... > > > > > > then, we could have several exception classes, extending SoapFault ... > > > > > > class MySoapException extends SoapFault { > > > var $faultcode = "MYAPP:MyCode"; > > > ... > > > } > > > > > > and then in you soap method: > > > > > > throw new MySoapException (); > > > > Yeah i want to do alot of stuff with zend two... > > > > throwing faults on server and catching faults on client... > > > > > > > > > > > > > > > > -----Original Message----- > > > From: brad lafountain [mailto:rod...@ya...] > > > Sent: mardi 30 avril 2002 20:00 > > > To: phpsurf; php...@li... > > > Subject: Re: [PHP-SOAP-DEV] Custom Faults > > > > > > > > > > > > --- phpsurf <ph...@if...> wrote: > > > > Hi > > > > > > > > just a quick question : > > > > is it possible to throw custom faults on the soap server side ? > > > > > > > > the native PHP errors handling is really great ... everything works > > > without > > > > having to handle anything ! > > > > but what if I want to qualify the different types of errors > and assign > > > them > > > > different FaultCodes ? > > > > > > Currently there is no way of doing this. I do have a > SoapFault class. I > > > wanted > > > to intergrate that on the server side so you could do what you > > are talking > > > about. > > > > > > How would you suggest the fault code return look. > > > > > > function do_something() > > > { > > > if(some_status) > > > return string; > > > else > > > return new SoapFault("code", "details"); > > > } > > > > > > > > > - brad > > > > > > > > thx > > > > > > > > > > > > > > > > > > > > __________________________________________________________________ > > __________ > > > __ > > > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > > > > > > > > > > _______________________________________________ > > > > 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 > > > > > > > __________________________________________________________________ > __________ > __ > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > __________________________________________________ > Do You Yahoo!? > Yahoo! Health - your guide to health and wellness > http://health.yahoo.com > > _______________________________________________________________ > > 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 > > > __________________________________________________________________ > ____________ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > > > _______________________________________________________________ > > 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: phpsurf <ph...@if...> - 2002-05-05 01:08:24
|
by the way, like you added __getLastMessage() to get the last request send by the client, can you also add a method to get the last response received by the server ? something like __getLastResponse() or whatever you want :) thx > -----Original Message----- > From: php...@li... > [mailto:php...@li...]On Behalf > Of brad lafountain > Sent: jeudi 2 mai 2002 07:05 > To: php...@li... > Cc: ahr...@ic... > Subject: [PHP-SOAP-DEV] New Release php-soap_0.1.1 > > > Ok i have put out a new release. > I know that that was quick.. I havn't added that much but i realized i did > something that was't good. So i suggest who ever is using it use the new > update. > > What this does... > > Some handing stuff.. > The server useto automatically send a fault when > always_populate_raw_post_data > was off. Now it will check for HTTP_RAW_POST_DATA first then check the ini > setting and if it's off it will finally send the fault saying the > ini setting > should be on. > > The client useto deny any request that doesn't have the > Content-Type: text/xml. > I changed it so that it will check the header first if its not > xml it will read > the first 5 bytes and see if its xml ("<?xml"). If that is true > it will try and > process the request normall. > > By default the server automatically exposed all methods available > to php. I > changed it so that it doesn't expose any. You now will have to > tell the server > every function you want exposed. > See... > http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/documentation/ classes/soapserver/addfunction/ You can still expose all methods by calling $soap_server->addFunction(SOAP_FUNCTIONS_ALL); but its not default anymore.. New Features.. On the server side you can now return custom faults.. function do_something($data) { if(!$data) return new SoapFault(string "fault_string" [, string "fault_code"] [, mixed "details] [, "fault_actor]); return "thanks for suppling $data"; } On the client side you can now see the seralized soap call $client->some_soap_call(); echo $client->__getLastMessage(); The big reason for the patch already.. I added php stream handling code for the upcomming streams in php-4.3.0. When i did i change php_close_socket(socket) to close(socket). So all of you client calls are keeping a connection to the server. So if you are calling multiple calls to the same server you will notice a huge performance difference. And i fixed a few mem leaks. And the config.m4 file in the tar ball won't be a tar ball again. A windows binary and tarballs will be posted shortly Enjoy.. keep the feed back comming. -Brad __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com _______________________________________________________________ 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: phpsurf <ph...@if...> - 2002-05-05 01:05:26
|
well ... I've just restored my test scripts and added some new custom errors after installing the last release 0.1.1, and they don't work ! return new SoapFault("my error message !"); makes PHP crash ! :( (working on Windows 2000 + Apache 1.23 + PHP 4.2.0 + Php_Soap 0.1.1) > -----Original Message----- > From: php...@li... > [mailto:php...@li...]On Behalf > Of brad lafountain > Sent: jeudi 2 mai 2002 05:21 > To: phpsurf; php...@li... > Subject: RE: [PHP-SOAP-DEV] Custom Faults > > > > --- phpsurf <ph...@if...> wrote: > > well, it sounds good ... > > new SoapFault ("faultstring", ["faultcode", ]["faultactor", > ]["details"]) > > I am implementing this now... > > I think i will do.. > new SoapFault ("faultstring", ["faultcode", ]["details", ]["faultactor"]) > or > new SoapFault ("faultstring", ["details", ]["faultcode", ]["faultactor"]) > > What do you think... > > The reason for this is i think people will use details more than > they will use > actor.... > > > > > > but maybe, you could take advantage from waiting for the new exception > > system in ZendEngine2 ... > > > > then, we could have several exception classes, extending SoapFault ... > > > > class MySoapException extends SoapFault { > > var $faultcode = "MYAPP:MyCode"; > > ... > > } > > > > and then in you soap method: > > > > throw new MySoapException (); > > Yeah i want to do alot of stuff with zend two... > > throwing faults on server and catching faults on client... > > > > > > > > > > -----Original Message----- > > From: brad lafountain [mailto:rod...@ya...] > > Sent: mardi 30 avril 2002 20:00 > > To: phpsurf; php...@li... > > Subject: Re: [PHP-SOAP-DEV] Custom Faults > > > > > > > > --- phpsurf <ph...@if...> wrote: > > > Hi > > > > > > just a quick question : > > > is it possible to throw custom faults on the soap server side ? > > > > > > the native PHP errors handling is really great ... everything works > > without > > > having to handle anything ! > > > but what if I want to qualify the different types of errors and assign > > them > > > different FaultCodes ? > > > > Currently there is no way of doing this. I do have a SoapFault class. I > > wanted > > to intergrate that on the server side so you could do what you > are talking > > about. > > > > How would you suggest the fault code return look. > > > > function do_something() > > { > > if(some_status) > > return string; > > else > > return new SoapFault("code", "details"); > > } > > > > > > - brad > > > > > > thx > > > > > > > > > > > > > > __________________________________________________________________ > __________ > > __ > > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > > > > > > _______________________________________________ > > > 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 > > > ____________________________________________________________________________ __ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com _______________________________________________________________ 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: phpsurf <ph...@if...> - 2002-05-05 00:29:41
|
right, we are talking about several things here ! :) 1- wsdl auto-generation: ok, good idea, I have no other experience of this (only played with java implementation which is type specific ...) 2- php/soap serialization/deserialization: indeed wsdl defines the soap type of a soap parameter, but my point here is: how to determine the corresponding php type ? As they do in the Apache java implementation of soap, we could have a mapping table that would associate each soap type with a php type ... and we could also be able to define our own serializer/deserializer function ... something that would tell php_soap (for a specific instance of soap server): "every time you receive a soap type 'mySchemaSoapType' (as defined is the schema part of the wsdl), deserialize it into the following php type 'myPhpClass' (which would be an existing class, or any php type code), using the deserializer handler 'mySoapToPhpDeserializerFunction' (wich is an existing function)" this definition could run-time on client side and setup (a specific xml document/ or comments in the code) on server side or simply run-time on both client and server side ... for example, one can define a bean_serializer which will only send via soap attributes of an object that have a getter method ... maybe you could have a look at the Apache Implementation of Soap in Java to see how they handled this problematic ... I think their aproach is very attractive because it really let the developer do what he wants with the soap implementation ... this is very powerfull ! http://xml.apache.org/soap/index.html > -----Original Message----- > From: brad lafountain [mailto:rod...@ya...] > Sent: mercredi 1 mai 2002 00:41 > To: phpsurf; php...@li... > Subject: RE: [PHP-SOAP-DEV] WSDLGenerator > > > > --- phpsurf <ph...@if...> wrote: > > > > > -----Original Message----- > > > When php-soap starts generating wsdl's it is going to be soley > > > dependant on the > > > user documenting their code. phpdoc style. Otherwise the wsdl > > > generator can't > > > know types and parameters. > > Well I think we are talking about two differnt things here. > 1) wsdl generation.. > > The wsdl has definintions about parameter types and return > types. We all know > php isn't type specfic. So for php-soap to be able to > auto-generate wsdls it > needs to know the types of parameters and the return values. So > was looking > into phpdoc and how to use that. > > /** > Short Desc > > Long Desc > > @param name string description > @param value string description > @returns string description > */ > function do_something($name, $value) > { > return $name . $value; > } > > if someone documents their code then php-soap can parse that file > and pull the > necessary information and genearte a wsdl from that. but that > assumes that the > developers are going to write their docuemntation correctly. Or i > can write a > script that will help the user guide thru a process of generating > a wsdl. the > "wizzard" will prompt them for parameters and return types. > > 2) php serialization / soap serialziation to and from native php and soap. > Currently there is no way to override the way that it will > seralize types. I do > plan on creating an api to allow the users both on the client and > server to > override serialization. I havn't thought of a good way of doing > it yet. But for > the most part im pretty sure you wont need this. > The way it currently works right now is. > your wsdl defines this > <schema> > <s:element name="someObject"> > <s:complexType> > <s:element type="s:string" name="memberOne"> > <s:element type="s:string" name="memberTwo"> > </s:complexType> > </s:element> > </schema> > and you have this code > $server = new SoapServer(); > $server->addFunction("returnSomeObject"); > $server->bind("/wsdl/location/test.wsdl"); > $server->handle(); > > function returnSomeObject() > { > $ret->memberOne = 'test'; > $ret->memberTwo = 'test'; > $ret->memberThree = 'test'; > $ret->memberFour = 'test'; > return ret; > } > > now anytime someone invokes returnSomeObject it will only serialize > memberOne and memberTwo and leave out memberFour and memberFive. > and again with types it will auto convert types to the correct values. > and with i don't know if you have seen SoapVar. But you can do > something like > this > > function getDateTime() > { > return new SoapVar(time(), XSD_DATETIME); > } > > and that will serialize to the correct date time string that xsd defines. > > take alook at > > http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/documentation/ classes/soapvar/constructor/ Does this make any sence. If i still need to add a way to override serialziation then i will add it. I just need to come up with a way to give the user a way to define it. - brad > > are you talking about, for example, object creation from soap values, I mean > : how to transform a SoapValue into the apropriate PhpClass/Type ? > > I've been working a litle with the java Apache Soap implementation ... > and they use, on the client side some kind of mapping table which is a > property of each SoapClient. > > and on the server side, they use an xml file called "deployment descriptor" > to describe the java properties of the web services available on the server. > I know this server side on .Net is in the code comments likewhat you suggest > ... > > indeed, it's not really a question :) > I just wanted to know your thinking about that ... > > > ____________________________________________________________________________ __ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > > > _______________________________________________ > 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: phpsurf <ph...@if...> - 2002-05-04 23:51:41
|
Hi ! I'm just coming back from some days off to the beach ... great to hear you're planning to play with ZE2 :) I have no preference for SoapFault params order ... 'till we can still call it new SoapFault ("faultstring", null, "faultcode", null) or anything like that ... > -----Original Message----- > From: php...@li... > [mailto:php...@li...]On Behalf > Of brad lafountain > Sent: jeudi 2 mai 2002 05:21 > To: phpsurf; php...@li... > Subject: RE: [PHP-SOAP-DEV] Custom Faults > > > > --- phpsurf <ph...@if...> wrote: > > well, it sounds good ... > > new SoapFault ("faultstring", ["faultcode", ]["faultactor", > ]["details"]) > > I am implementing this now... > > I think i will do.. > new SoapFault ("faultstring", ["faultcode", ]["details", ]["faultactor"]) > or > new SoapFault ("faultstring", ["details", ]["faultcode", ]["faultactor"]) > > What do you think... > > The reason for this is i think people will use details more than > they will use > actor.... > > > > > > but maybe, you could take advantage from waiting for the new exception > > system in ZendEngine2 ... > > > > then, we could have several exception classes, extending SoapFault ... > > > > class MySoapException extends SoapFault { > > var $faultcode = "MYAPP:MyCode"; > > ... > > } > > > > and then in you soap method: > > > > throw new MySoapException (); > > Yeah i want to do alot of stuff with zend two... > > throwing faults on server and catching faults on client... > > > > > > > > > > -----Original Message----- > > From: brad lafountain [mailto:rod...@ya...] > > Sent: mardi 30 avril 2002 20:00 > > To: phpsurf; php...@li... > > Subject: Re: [PHP-SOAP-DEV] Custom Faults > > > > > > > > --- phpsurf <ph...@if...> wrote: > > > Hi > > > > > > just a quick question : > > > is it possible to throw custom faults on the soap server side ? > > > > > > the native PHP errors handling is really great ... everything works > > without > > > having to handle anything ! > > > but what if I want to qualify the different types of errors and assign > > them > > > different FaultCodes ? > > > > Currently there is no way of doing this. I do have a SoapFault class. I > > wanted > > to intergrate that on the server side so you could do what you > are talking > > about. > > > > How would you suggest the fault code return look. > > > > function do_something() > > { > > if(some_status) > > return string; > > else > > return new SoapFault("code", "details"); > > } > > > > > > - brad > > > > > > thx > > > > > > > > > > > > > > __________________________________________________________________ > __________ > > __ > > > ifrance.com, l'email gratuit le plus complet de l'Internet ! > > > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > > > http://www.ifrance.com/_reloc/email.emailif > > > > > > > > > > > > _______________________________________________ > > > 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 > > > ____________________________________________________________________________ __ > ifrance.com, l'email gratuit le plus complet de l'Internet ! > vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... > http://www.ifrance.com/_reloc/email.emailif > > __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com _______________________________________________________________ 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 ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: brad l. <rod...@ya...> - 2002-05-04 16:38:01
|
well i think i found the segfault.. i already commited it to cvs. You can d/l it and test it, i can't get to segfault anymore. - Brad __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: brad l. <rod...@ya...> - 2002-05-04 15:21:06
|
Hmm... The script that i can get to segfault if i put some other code (nothing to do with phpsoap) will stop segfaulting too. The thing im curious about is im not able to get the hello_world example to crash. try pulling down the current cvs. run the script again, the one that crashes, tail logs/error_log see if thers a segfault in there. - Brad --- Andrey Hristov <ahr...@ic...> wrote: > Maybe I've some good news for you. Last night I do some hacking on the test > scripts. > Testing with ab a simple hello_world_client+server.php gives me 377 errors - > probably all of those are because of the segfault. > I started to debug in th userspace to realize where it is crashing - and > what a surprise, after I started to debug the scripts do not crash. > Here I will post 2 pairs of sample scripts. The first one gives errors, the > second one not. To be almost completely sure I have done throughout test for > the latter pair for 1,500,000 reqs or 25200 secs(7hours) - it did 1,386,142 > requests. The difference between then is the server part of the pair. No > segfaulting scripts have just 2 lines more and these lines have nothing in > common with the SOAP extension. > hello_world_client.php + hello_world_server.php: > <?php > error_reporting(E_ALL); > echo microtime()."<br>\n"; > $hello = new SoapObject("http://192.168.1.140/hello_world_server.php", > "urn:HelloWord"); > echo microtime()."<br>\n"; > echo $hello->hello_soap("alala"); > echo microtime()."<br>\n"; > //var_dump($hello); > //var_dump(get_class_methods('SoapServer')); > ?> > hello_world_server.php > <?php > /* > $fname = 'tests/dbg'.str_replace(" ","_",microtime()).'.xml'; > $fd=fopen($fname,'w+'); > > ob_start(); > //var_dump($HTTP_RAW_POST_DATA); > //$a=ob_get_contents(); > ob_end_clean(); > > fputs($fd,$a."\n"); > fclose($fd); > */ > $server = new SoapServer("urn:HelloWord"); > /* > $fd=fopen($fname,'a+'); > fputs($fd,"after_server_create\n"); > fclose($fd); > */ > $server->addfunction("hello_soap"); > > //$fd=fopen($fname,'a'); > //fputs($fd,"after_addfunction\n"); > //fclose($fd); > > $server->handle(); > > function hello_soap($message){ > return "PHP-SOAP says ($message)"; > } > ?> > NOT SEGFAULTING pair: > <?php > error_reporting(E_ALL); > echo microtime()."<br>\n"; > $hello = new SoapObject("http://192.168.1.140/hello_world_server_noseg.php", > "urn:HelloWord"); > echo microtime()."<br>\n"; > echo $hello->hello_soap("alala"); > echo microtime()."<br>\n"; > //var_dump($hello); > //var_dump(get_class_methods('SoapServer')); > ?> > <?php > /* > $fname = 'tests/dbg'.str_replace(" ","_",microtime()).'.xml'; > $fd=fopen($fname,'w+'); > */ > ob_start(); > //var_dump($HTTP_RAW_POST_DATA); > //$a=ob_get_contents(); > ob_end_clean(); > /* > fputs($fd,$a."\n"); > fclose($fd); > */ > $server = new SoapServer("urn:HelloWord"); > /* > $fd=fopen($fname,'a+'); > fputs($fd,"after_server_create\n"); > fclose($fd); > */ > $server->addfunction("hello_soap"); > > //$fd=fopen($fname,'a'); > //fputs($fd,"after_addfunction\n"); > //fclose($fd); > > $server->handle(); > > function hello_soap($message){ > return "PHP-SOAP says ($message)"; > } > ?> > > Results from segfaulting pair: > Concurrency Level: 20 > Time taken for tests: 849.216 seconds > Complete requests: 50000 > Failed requests: 377 > (Connect: 0, Length: 377, Exceptions: 0) > Broken pipe errors: 0 > Total transferred: 16836709 bytes > HTML transferred: 4933615 bytes > Requests per second: 58.88 [#/sec] (mean) > Time per request: 339.69 [ms] (mean) > Time per request: 16.98 [ms] (mean, across all concurrent requests) > Transfer rate: 19.83 [Kbytes/sec] received > > Results from nonsegfaulting pair: > Concurrency Level: 20 > Time taken for tests: 25200.047 seconds > Complete requests: 1386142 > Failed requests: 0 > Broken pipe errors: 0 > Total transferred: 467135920 bytes > HTML transferred: 137229840 bytes > Requests per second: 55.01 [#/sec] (mean) > Time per request: 363.60 [ms] (mean) > Time per request: 18.18 [ms] (mean, across all concurrent requests) > Transfer rate: 18.54 [Kbytes/sec] received > > I hope that this will give some light what is going on. > > Have a nice day > > Andrey > > ----- Original Message ----- > From: "brad lafountain" <rod...@ya...> > To: "Andrey Hristov" <ahr...@ic...> > Sent: Friday, May 03, 2002 9:47 PM > Subject: Re: [PHP-SOAP-DEV] some benchmarks. > > > > Yeah i use malloc on purpose.. > > > > I use it for all of my wsdl stuff. My idea behind it is once a wsdl has > been > > parsed it can be kept around. Wsdl caching... its not in shared memory so > each > > demon will have to cache it. But it should work pretty good. even client > and > > server can share the same cached wsdl. Maybe someday i will make it use > shared > > memory. > > > > Let me know how the benchmarks go. > > > > Ill get that segfault eventually! > > > > - Brad > > > > --- Andrey Hristov <ahr...@ic...> wrote: > > > 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"; > > > > ?> > === message truncated === __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com |
From: Andrey H. <ahr...@ic...> - 2002-05-04 08:22:11
|
Maybe I've some good news for you. Last night I do some hacking on the test scripts. Testing with ab a simple hello_world_client+server.php gives me 377 errors - probably all of those are because of the segfault. I started to debug in th userspace to realize where it is crashing - and what a surprise, after I started to debug the scripts do not crash. Here I will post 2 pairs of sample scripts. The first one gives errors, the second one not. To be almost completely sure I have done throughout test for the latter pair for 1,500,000 reqs or 25200 secs(7hours) - it did 1,386,142 requests. The difference between then is the server part of the pair. No segfaulting scripts have just 2 lines more and these lines have nothing in common with the SOAP extension. hello_world_client.php + hello_world_server.php: <?php error_reporting(E_ALL); echo microtime()."<br>\n"; $hello = new SoapObject("http://192.168.1.140/hello_world_server.php", "urn:HelloWord"); echo microtime()."<br>\n"; echo $hello->hello_soap("alala"); echo microtime()."<br>\n"; //var_dump($hello); //var_dump(get_class_methods('SoapServer')); ?> hello_world_server.php <?php /* $fname = 'tests/dbg'.str_replace(" ","_",microtime()).'.xml'; $fd=fopen($fname,'w+'); ob_start(); //var_dump($HTTP_RAW_POST_DATA); //$a=ob_get_contents(); ob_end_clean(); fputs($fd,$a."\n"); fclose($fd); */ $server = new SoapServer("urn:HelloWord"); /* $fd=fopen($fname,'a+'); fputs($fd,"after_server_create\n"); fclose($fd); */ $server->addfunction("hello_soap"); //$fd=fopen($fname,'a'); //fputs($fd,"after_addfunction\n"); //fclose($fd); $server->handle(); function hello_soap($message){ return "PHP-SOAP says ($message)"; } ?> NOT SEGFAULTING pair: <?php error_reporting(E_ALL); echo microtime()."<br>\n"; $hello = new SoapObject("http://192.168.1.140/hello_world_server_noseg.php", "urn:HelloWord"); echo microtime()."<br>\n"; echo $hello->hello_soap("alala"); echo microtime()."<br>\n"; //var_dump($hello); //var_dump(get_class_methods('SoapServer')); ?> <?php /* $fname = 'tests/dbg'.str_replace(" ","_",microtime()).'.xml'; $fd=fopen($fname,'w+'); */ ob_start(); //var_dump($HTTP_RAW_POST_DATA); //$a=ob_get_contents(); ob_end_clean(); /* fputs($fd,$a."\n"); fclose($fd); */ $server = new SoapServer("urn:HelloWord"); /* $fd=fopen($fname,'a+'); fputs($fd,"after_server_create\n"); fclose($fd); */ $server->addfunction("hello_soap"); //$fd=fopen($fname,'a'); //fputs($fd,"after_addfunction\n"); //fclose($fd); $server->handle(); function hello_soap($message){ return "PHP-SOAP says ($message)"; } ?> Results from segfaulting pair: Concurrency Level: 20 Time taken for tests: 849.216 seconds Complete requests: 50000 Failed requests: 377 (Connect: 0, Length: 377, Exceptions: 0) Broken pipe errors: 0 Total transferred: 16836709 bytes HTML transferred: 4933615 bytes Requests per second: 58.88 [#/sec] (mean) Time per request: 339.69 [ms] (mean) Time per request: 16.98 [ms] (mean, across all concurrent requests) Transfer rate: 19.83 [Kbytes/sec] received Results from nonsegfaulting pair: Concurrency Level: 20 Time taken for tests: 25200.047 seconds Complete requests: 1386142 Failed requests: 0 Broken pipe errors: 0 Total transferred: 467135920 bytes HTML transferred: 137229840 bytes Requests per second: 55.01 [#/sec] (mean) Time per request: 363.60 [ms] (mean) Time per request: 18.18 [ms] (mean, across all concurrent requests) Transfer rate: 18.54 [Kbytes/sec] received I hope that this will give some light what is going on. Have a nice day Andrey ----- Original Message ----- From: "brad lafountain" <rod...@ya...> To: "Andrey Hristov" <ahr...@ic...> Sent: Friday, May 03, 2002 9:47 PM Subject: Re: [PHP-SOAP-DEV] some benchmarks. > Yeah i use malloc on purpose.. > > I use it for all of my wsdl stuff. My idea behind it is once a wsdl has been > parsed it can be kept around. Wsdl caching... its not in shared memory so each > demon will have to cache it. But it should work pretty good. even client and > server can share the same cached wsdl. Maybe someday i will make it use shared > memory. > > Let me know how the benchmarks go. > > Ill get that segfault eventually! > > - Brad > > --- Andrey Hristov <ahr...@ic...> wrote: > > 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 _ > > > > > > > > > > > _______________________________________________________________ > > > > 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 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 _ > |
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 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 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-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: andrey <ahr...@ic...> - 2002-05-02 18:53:55
|
> I look at it like that soap service IS that class. Why i did that is... You can > build a class and expose it thur soap.. and have any client use your soap > object as is.. no changing your object.. just like they would use it locally. I > really want to keep this functionality. Its very very useful. Cause you can > create an instance of the object and persist it. I can make the extension not > expose private functions like _*() functions. That is a good point. Two choices : 1) to ban _*() functions or 2) to allow export_*() functions but they will be seen as *() (export_sum() will be sum() outside) "export" can be any other meaningful word. Regards, Andrey |
From: brad l. <rod...@ya...> - 2002-05-02 18:43:30
|
--- andrey <ahr...@ic...> wrote: > Hi Brad, > > > $soap->setClass("some_class"); > > > > class some_class > > { > > function method_one(); > > function method_two(); > > } > > > > now the soap server will act just like that class will. > But what if the class has some methods I don't want to expose one or more > methods? However I think that adding method of a class is done transparently > so > $server->addfunction(array("some_class","method_one")); > This kind of adding works in the gtk extension as well as in the xmlrpc > extension. Well when you do $soap->setClass("class"); I look at it like that soap service IS that class. Why i did that is... You can build a class and expose it thur soap.. and have any client use your soap object as is.. no changing your object.. just like they would use it locally. I really want to keep this functionality. Its very very useful. Cause you can create an instance of the object and persist it. I can make the extension not expose private functions like _*() functions. take a look at that sample.. http://phpsoaptoolkit.sourceforge.net/phpsoap/guide/samples/session_object/ Now if you are talking about a non-class based soap-server and you just want to expose some methods to an existing class the class method will have to be static. Meaning the method can't access any $this-> members or functions. The extension doesn't currently handle this. here is an example. <? $server->addFunction(array("foo" => "bar", "foo" => "foo")); // when someone trys to call foo->foo (thru soap) it will fail.. cause // there isn't an instance of foo. class foo { var $foo = 'foo'; function bar($bar) { return "bar says $bar"; } function foo() { return "foo can't say $this->foo"; } } ?> > > yeah it can't be compiled as a dso.. it can be compiled in staically.. > > just your normal configure. > > > > ./configure --enable-soap --(other php config > options) --with-apache=(apache > > location) > Ok. I'll try to build it tonight. tell me how it goes > > 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 <ahr...@ic...> - 2002-05-02 18:14:40
|
Hi Brad, > $soap->setClass("some_class"); > > class some_class > { > function method_one(); > function method_two(); > } > > now the soap server will act just like that class will. But what if the class has some methods I don't want to expose one or more methods? However I think that adding method of a class is done transparently so $server->addfunction(array("some_class","method_one")); This kind of adding works in the gtk extension as well as in the xmlrpc extension. > yeah it can't be compiled as a dso.. it can be compiled in staically.. > just your normal configure. > > ./configure --enable-soap --(other php config options) --with-apache=(apache > location) Ok. I'll try to build it tonight. Andrey |
From: brad l. <rod...@ya...> - 2002-05-02 18:07:21
|
This sample runs fine on my machine.... try this.. <?php $hello = new SoapObject("http://localhost:8080/hello_world_server.php", "urn:HelloWorld"); echo $hello->hello_soap(); if($hello->__isFault()) var_dump($hello->__getFault()); ?> That will show you if there server or client is giving you a fault. - Brad --- Jean-Charles Preaux <jc....@wa...> wrote: > Re > it's ok there is no crash but when i launch the script below, the httpd > daemon is lauched a least 50 times, without any response from the browser > i launch hello_world_client.php > > /* hello_world_client.php */ > <?php > $hello = new SoapObject("http://localhost:8080/hello_world_server.php", > "urn:HelloWorld"); > echo $hello->hello_soap(); > ?> > > /* hello_world_server.php */ > <?php > $server = new SoapServer("urn:HelloWorld"); > $server->addFunction("hello_soap"); > $server->handle(); > > > function hello_soap($message){ > return "PHP-SOAP¨says ($message)"; > } > > ?> > /* when i run gdb */ > web:/opt/serveur/bin# gdb httpd > GNU gdb 2002-04-01-cvs > Copyright 2002 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain > conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "i386-linux"...(no debugging symbols found)... > (gdb) run -X -f /opt/serveur/conf/httpd.conf > Starting program: /opt/serveur/bin/httpd -X -f /opt/serveur/conf/httpd.conf > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > (no debugging symbols found)...(no debugging symbols found)...(no debugging > symbols found)...(no debugging symbols found)...(no debugging symbols > found)... > > > is it ok ? > thx > Jean-Charles Preaux > . > ----- Original Message ----- > From: "brad lafountain" <rod...@ya...> > To: "Jean-Charles Preaux" <jc....@wa...> > Cc: <php...@li...> > Sent: Thursday, May 02, 2002 5:18 PM > Subject: Re: [PHP-SOAP-DEV] 'always_populate_raw_post_data' question > > > > Well... I dunno about that.... > > > > Can you supply a backtrace... > > > > gdb httpd > > > > run -X > > > > then run the script that cause the crash... > > > > then type bt... > > > > this will get you a backtrace and more information for me to go on... > > > > - Brad > > --- Jean-Charles Preaux <jc....@wa...> wrote: > > > in fact > > > i fust typing the hello_world-server.php in the browser. > > > :( > > > but when i use hello_world_server.php it crash my web server ...without > any > > > response. > > > thx > > > ----- Original Message ----- > > > From: "brad lafountain" <rod...@ya...> > > > To: "Jean-Charles Preaux" <jc....@wa...>; > > > <php...@li...> > > > Sent: Thursday, May 02, 2002 4:36 PM > > > Subject: Re: [PHP-SOAP-DEV] 'always_populate_raw_post_data' question > > > > > > > > > > Hmm... are you running a SoapObject against the hello_world-server or > are > > > you > > > > just typing the hello_world-server.php in the browser directly/command > > > line. > > > > This is the output you should recieve if you aren't using a SoapObject > to > > > > access the server. Let me know if this helps > > > > > > > > - Brad > > > > > > > > --- Jean-Charles Preaux <jc....@wa...> wrote: > > > > > Hello > > > > > i try today to use PHP-SOAP extension. > > > > > it compiled well (i use php-4.2.0 and apache-1.3.24, libxml2-2.4.19, > > > > > expat-1.95.2, Sablot-0.90) > > > > > i try the "hello world-server.php" script and the output is : > > > > > <!-- > > > > > <?xml version="1.0" encoding="UTF-8" ?> > > > > > - <SOAP-ENV:Envelope > > > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > > > > > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > > > > - <SOAP-ENV:Body> > > > > > - <SOAP-ENV:Fault xsi:type="SOAP-ENC:Struct"> > > > > > <faultstring xsi:type="xsd:string">PHP-SOAP requires > > > > > 'always_populate_raw_post_data' to be on please check your php.ini > > > > > file</faultstring> > > > > > <faultcode xsi:type="xsd:string">SOAP-ENV:Server</faultcode> > > > > > </SOAP-ENV:Fault> > > > > > </SOAP-ENV:Body> > > > > > </SOAP-ENV:Envelope> > > > > > --> > > > > > then i create a php.ini with : > > > > > always_populate_raw_post_data = 1 > > > > > but the new output is : > > > > > <!-- > > > > > <?xml version="1.0" encoding="UTF-8" ?> > > > > > - <SOAP-ENV:Envelope > > > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > > > > > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > > > > - <SOAP-ENV:Body> > > > > > - <SOAP-ENV:Fault xsi:type="SOAP-ENC:Struct"> > > > > > <faultstring xsi:type="xsd:string">Couln't find > > > > > HTTP_RAW_POST_DATA</faultstring> > > > > > <faultcode xsi:type="xsd:string">SOAP-ENV:Server</faultcode> > > > > > </SOAP-ENV:Fault> > > > > > </SOAP-ENV:Body> > > > > > </SOAP-ENV:Envelope> > > > > > --> > > > > > i don't understand , have i made a mistake ? > > > > > thanks > > > > > Jean-Charles Preaux > > > > > http://analogx.dyndns.org > > > > > > > > > > > > __________________________________________________ > > > > Do You Yahoo!? > > > > Yahoo! Health - your guide to health and wellness > > > > http://health.yahoo.com > > > > > > > > > __________________________________________________ > > Do You Yahoo!? > > Yahoo! Health - your guide to health and wellness > > http://health.yahoo.com > > > > _______________________________________________________________ > > > > 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 > > > _______________________________________________________________ > > 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 |