2009年2月24日星期二

Re: [fw-webservices] Zend_Soap_Server not working on a production environment

what do you mean by timeout? 30 secs execution? is it maybe that your
production data is so much more huge, that your code is running into problems?
what is the actual bottleneck in the timeouting operation?

greetings,
benjamin

On Tuesday 24 February 2009 17:40:42 Guillaume Oriol wrote:
> Hi,
>
> I am facing an issue while writing a simple SOAP server with ZF.
>
> When I execute a method of the web service (getData) on a testing server,
> everything works perfectly.
> But when I try to run it on my production environment, I get an Apache
> server error (HTTP 500): the PHP script times out while trying to execute :
> $server = new SoapServer($this->_wsdl, $options);
> in Zend_Soap_Server::_getSoap().
>
> If I request the WSDL, the server sends it back properly on BOTH
> environments.
>
>
> I enabled the SOAP server on PHP the same way on testing and production
> environments (both Linux Debian 1.6.x):
>
> extension=php_soap.so
> [soap]
> soap.wsdl_cache_enabled=0
>
> Any idea?
>
> Here is the controller action:
>
> public function importAction()
> {
> $this->_helper->ViewRenderer->setNoRender();
> $this->_helper->layout->disableLayout();
>
> $uri = 'http://' . $_SERVER['HTTP_HOST'] . '/shipment/import?wsdl';
> if (isset($_GET['wsdl'])) {
> $wsdl = new Zend_Soap_AutoDiscover();
> // The default URI is set to
> // 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']
> // which is exactly what we want. No need to specify it.
> $wsdl->setClass('ShipmentSynchronization');
> $wsdl->handle();
> } else {
> $server = new Zend_Soap_Server($uri, array('soap_version' =>
> SOAP_1_2));
> $server->setClass('ShipmentSynchronization');
> $server->handle();
> }
> }
>
>
> And here is the service class skeleton:
>
> class ShipmentSynchronization
> {
> /**
> * Send a flat table resulting of an inner join between...
> * @return string The shipments, containers and references.
> */
> public function getData()
> {
> // ...
> }
> /**
> * Transfer data from temporary table into history table after...
> * @param string $data
> * @return boolean Dummy value without which WinDev is unable to build
> its SOAP client
> */
> public function acknowledgeData($data)
> {
> // ...
> }
> }
>
>
> -----
> Guillaume ORIOL
> Sofware architect
> Technema

--
Benjamin Eberlei
http://www.beberlei.de

没有评论: