On Fri, Jun 25, 2010 at 9:51 AM, robert mena <robert.m...@gmail.com> wrote: > Hi, > 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. 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. Andrew