Forums / Developer / clear cache within template
Emmanuel Averty
Thursday 30 June 2011 7:02:43 am
Hi,
I wrote a template that fetch a lot of objects. For each one, I must display one of its attribute, so I use data_map template attribute.
Problem : each time I call data_map attribute of my objects, eZ Publish seems to cache those data into a global PHP variable. This variable grows until the PHP script dies due to memory exceed limit.
Question : Is there a way to clean the object cache within a template like I can do in PHP (eZContentObject::resetDataMap() or eZContentObject::clearCache()) ?
Thanks
Joe Kepley
Thursday 30 June 2011 8:19:54 am
Unfortunately, even if you could clear the global while rendering the template, you would likely wind up with a lot of unexpected problems as a result.
Your best bet is to increase PHP's memory_limit setting. You can also use cache-blocks and the View caching system to keep the memory usage down on subsequent requests.
Does that help?
Marko Žmak
Thursday 30 June 2011 4:45:46 pm
The only way I see is to create template operators that do such stuff.
Also you should rethink why are you fetching a lot of objects on one page... is this really needed and can it be done in some other way?
-- Nothing is impossible. Not if you can imagine it! Hubert Farnsworth
Thursday 30 June 2011 11:39:37 pm
Thank you both for your replies.
@Joe : I don't want to increase PHP's memory_limit. It is already high.
@Marko : Yes I must display all these objects data. But you're right I will write my template in a new way : I'll do the fetch stuff in a php module which could clear cache and then transmit only what's needed threw template variables.
Thanx again
Script start
Module start 'content'
Module end 'content'
Script end
Time used to render debug report: 0.0002 secs