Maybe I am missing something, but the example you gave does not call cache->start(). And the manual of Zend_Cache states that when calling start, the cache will fetch all output of the complete page which is sent to browser and write it to the cache. And it will do this until the script has finished which means that all content is stored which is produced.

You can use the same cache as long as the classes which use the cache store their data in different ids. All I18N classes use this behaviour, therefor you can use the same cache for all I18N classes.

I still believe that this is a misusage.
But you are free to correct me. :-)

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com

----- Original Message ----- From: "kirpit" <[EMAIL PROTECTED]>
To: "Thomas Weidner" <[EMAIL PROTECTED]>
Cc: <[email protected]>
Sent: Friday, November 21, 2008 9:01 AM
Subject: Re: [fw-general] Re: $cache->start() and caching with Zend_Translate together, possible bug?


Hey, don't you offence my friend and no need triple exclamation marks like
that. I'm just here trying to be developer who gives feedbacks about
possible issues. Something like payback to usage of such a nice
architectured and totally free, open source framework. Get it?

First, of course sometimes i miss the parts of documantation but i do read
documantation starting from this example;
http://framework.zend.com/manual/en/zend.translate.adapter.html#zend.translate.adapter.caching
which is using "Page" as cache frontend.in zend_translate.

And second, please don't take this as complaining but i'm just wondering how
is it working the same $cache object for zend_date right before
zend_translate in bootstrap;
Zend_Date::setOptions(array('cache' => $cache));
(I'm not that low level programmer and didn't go through the ZF codes)

If you want us to dig this mailing group only for "how to"s and never show
up for the question marks, that is fine for me.

21 Kasım 2008 Cuma 09:12 tarihinde Thomas Weidner <[EMAIL PROTECTED]>yazdı:

Please read manual about how cache frontends work !!!

You used "Page" as Cache frontend.
According to manual:
Zend_Cache_Frontend_Page is like Zend_Cache_Frontend_Output but designed
for a complete page. It's impossible to use Zend_Cache_Frontend_Page for
caching only a single block.

Is there any reason why you want to have also the page input within the
same cache data as translation ?

Of course this can not work when other data are also added to the
translation cache within the same cache id.

This is definitly a problem of a misused cache.

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com

----- Original Message ----- From: "kirpit" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, November 21, 2008 2:05 AM
Subject: [fw-general] Re: $cache->start() and caching with Zend_Translate
together, possible bug?


 Ok, what I do, I write here step by step.

I have re-downloaded ZF 1.7. I removed everything under TEMP_DIR folder. I
removed every single localhost cookie.

I commented $cache->start(); line and uncommented
Zend_Translate::setCache($cache); line. And I have entered main page.
Everything looks very fine (while not cache hitting) and I have a file
zend_cache--zend_translate_full_csv_file_path filled with correct
translation table, serialized under temp dir next to some small metadata
files.

Then I removed again cookies and everything under temp dir. I comment
translate cache and uncomment $cache->start(). There is no cache hit as
expected. I do have fetched output in a file named zend_cache--someMd5 but
i
do not have any cache file about zend_translation under temp dir as
expected.

I only remove cookies, leaving temp dir as it is. There is cache hit as
expected and response time is 19ms (wow, here i adore ZF).

I check cookies (well there is none as cache hits), remove files under
temp
folder. I uncomment both of them. Enter the mainpage. What i have under
temp
dir is a file named zend_cache--zend_translate_full_csv_file_path. And
guess
what is inside? Fetched and serialized html output of page! :)

Yes, there is no any other file bigger than 1 kb. under temp.

Bug?

---------- Yönlendirilmiş ileti ----------
From: "Thomas Weidner" <[EMAIL PROTECTED]>
To: <[email protected]>
Date: Thu, 20 Nov 2008 07:34:19 +0100
Subject: Re: [fw-general] $cache->start() and caching with Zend_Translate
together, possible bug?
Sorry, but on the first look this seems to be a cache problem and not a
translation one.
Looking at the lines you provide I see that at line 435 the cache is
loaded...
$result = self::$_cache->load($id);
which happens without problems.

And then the cache is unserialized.
unserialize($result);
All translate classes are serializing the data before writing to cache so
this can not be a problem.

In my opinion there are only 4 things which can corrupt this behaviour.

1.) You are using an outdated cache after an update of ZF
2.) Someone writes manually to the translation cache without serializing
the
data
3.) Someone uses own written adapter which corrupt the cache
4.) You have a corrupted ZF version... try a update to fix the broken
files

Of course it could be that there is a problem in Zend_Cache itself, but I
dont believe this, because your problem is thrown in unserialize. Why
should
Zend_Cache change the stored data. And Zend_Translate stores only
serialized
strings.

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com


2008/11/20 kirpit <[EMAIL PROTECTED]>

 Hi ZF people.

I have following lines in bootstrap with ZF v1.7 running on php 5.2.6:

---------------------------------------->

$cache = Zend_Cache::factory('Page', 'File', array(
 'lifetime' => 60 * 60 * 12,
 'regexps' => array(
 // cache whole indexController
 '^' . BASE_PATH . '$' => array(
 'cache' => true),
 // cache whole indexController
 '^' . BASE_PATH . 'index' => array(
 'cache' => true),
 // cache whole iController
 '^' . BASE_PATH . 'i/' => array(
 'cache' => true),
 // cache ajax/get-suggest
 '^' . BASE_PATH . 'ajax/get-suggest' => array(
 'cache' => true,
 'cache_with_get_variables' => true,
 'cache_with_session_variables' => true,
 'cache_with_cookie_variables' => true,
 'make_id_with_get_variables' => true,
 'make_id_with_session_variables' => false,
 'make_id_with_cookie_variables' => false))), array(
 'cache_dir' => TEMP_DIR));
$cache->start();

// ... more later

Zend_Translate::setCache($cache);
$translate = new Zend_Translate('csv', DOC_ROOT . 'language' . DS .
'tr_TR.csv', 'tr_TR');
Zend_Registry::set('Zend_Translate', $translate);

---------------------------------------->

And it produces following errors:

Warning: unserialize() expects parameter 1 to be string, array given in
...\Zend\Translate\Adapter.php on line 436

Notice: No translation for the language 'tr_TR' available. in
...\Zend\Translate\Adapter.php on line 307

Notice: No translation for the language 'tr_TR' available. in
...\Zend\Translate\Adapter.php on line 307

Notice: No translation for the language 'tr_TR' available. in
...\Zend\Translate\Adapter.php on line 307

When I comment one of the cache feature, either $cache->start()
or Zend_Translate::setCache($cache); everything looks fine. I have found
similar bug below link but it says it is fixed already:
http://framework.zend.com/issues/browse/ZF-3930

Could be a bug?








Reply via email to