Spotkał mnie pewien problem przy budowaniu mechanizmów cache dla dużego serwisu,
opartego o Zend Framework w wersji bodajże 1.8 (1.8.2 bodajże).
Czytając dokumentację ZF i chcąc skorzystać z biblioteki Zend_Cache doszedłem do tego,
żeby cache'ować strony w całości na pewien okres czasu - powiedzmy 5 minut, korzystając
z frontendu Page (jako backend - File). Do tego jeszcze wynik każdej metody z każdego
modelu jest cache'owany i czyszczony na żądanie (tj. taki cache ma długą date ważności,
ale przy zmianach w bazie jest czyszczony i tworzony na nowo) - w tym przypadku korzystam
z frontendu Core i backendu File.
Problem pojawia sie przy sporej ilości scache'owanych danych szczególnie w tym drugim przypadku,
kiedy wyciągam dane z modelu (może być to nawet 20-30 krotne wywołanie metody load z Zend_Cache).
PHP uruchomione jako fast-cgi przy każdym procesie potrafi zeżereć 100% procesora (a sytuacja taka trwa nawet kika sekund) - co zabija serwis.
Na koniec kawałek konfiguracji cache'a. Być może coś tutaj jest nie tak - a być może wina leży
po stronie konfiguracji samego serwera - to chciałbym ustalić, tylko nie do końca jestem w stanie
to zrobić na chwilę obecną.. a być może ktoś już podobny temat rozdmuchał.
# konfiguracja cacheowania calych stron cache_page.frontend = Page cache_page.frontendOptions.caching = true cache_page.frontendOptions.lifetime = 300 cache_page.frontendOptions.debug_header = false cache_page.frontendOptions.default_options.cache = true cache_page.frontendOptions.default_options.cache_with_get_variables = true cache_page.frontendOptions.default_options.cache_with_post_variables = true cache_page.frontendOptions.default_options.cache_with_cookie_variables = true cache_page.frontendOptions.default_options.make_id_with_get_variables = true cache_page.frontendOptions.default_options.make_id_with_post_variables = true cache_page.frontendOptions.default_options.make_id_with_cookie_variables = true cache_page.backendOptions.cache_dir = /cache_page cache_page.backendOptions.hashed_directory_level = 1 cache_page.backendOptions.hashed_directory_umask = 0755 cache_page.backendOptions.cache_file_umask = 0755 # konfiguracja cacheowania modeli cache.frontend = Core cache.frontendOptions.caching = true cache.frontendOptions.lifetime = 2592000 cache.frontendOptions.automatic_serialization = true cache.backendOptions.cache_dir = /cache_db cache.backendOptions.hashed_directory_level = 3 cache.backendOptions.hashed_directory_umask = 0755 cache.backendOptions.cache_file_umask = 0755
Pozdrawiam