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

Reply via email to