-- Andrew Ballard <[email protected]> wrote (on Friday, 25 June 2010, 10:28 AM -0400): > On Fri, Jun 25, 2010 at 9:51 AM, robert mena <[email protected]> wrote: > > I ma facing the same problem (all my calls return null) and I am using > > e-accelerator. While changing to APC is possibile I can't do it right now. > > Is there any workaround? I've disabled the cache of wsdl in ini and removed > > the /tmp/wsdl-* cache file. > > The issue is not related to any of the soap.wsdl_cache* config > settings. The problem is that the PHP files that are being analyzed by > Zend_Soap_AutoDiscover have been cached by e-Accelerator's op-code > cache. The first time a file is loaded into PHP, the auto discovery > works as expected because PHP is working with the actual source code > that includes the phpDoc-block comments that describe the API you are > publishing via SOAP. However, subsequent requests will grab those > files from the op-code cache, which does not contain the comments. > > You have to make sure that eAccelerator is not caching the PHP file(s) > that define the API being discovered by Zend_Soap_AutoDiscover > (probably by using the eaccelerator.filter config). Of course by doing > this, you lose all the benefit of op-code caching on those specific > files. Depending on how wide you have to cast the net in your filter, > that could pretty well negate any benefit of having an op-code cache.
One option you might consider is using an opcode cache that doesn't strip out th docblock comments. Neither APC nor Zend Server do so -- they keep all information related to a class, including the docblocks. Alternately, put in a feature request to eaccelarator to stop stripping docblocks on code stored in the opcode cache (or provide an option to disable this "feature"). The argument they make is that it increases RAM usage if they aren't stripped; however, the amount of RAM they consume is actually fairly negligible, and RAM is cheap. > Ideally, your WSDL file should be a static document in your production > system anyway. You can use still use the auto discover method to build > the file without disabling anything in e-Accelerator as long as you > clear e-Accelerator's cache of the source file(s) and then immediately > grab the generated WSDL document and save it to an XML file. Once > you've saved it, publish that file somewhere in your web root and then > point all your SOAP clients to the URI for the static file. -- Matthew Weier O'Phinney Project Lead | [email protected] Zend Framework | http://framework.zend.com/ PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc
