Ben bu aynı sorunu yaşıyorum. Eğer henüz bir çözüm bulunamadı eğer ben bilmiyorum ama (çok verimli değil çünkü) ben geçici bir çözüm var:
Her sorgulamak için gidiyoruz masa ve önbellek sonuçlar için bir önbellek dizini oluşturun.
O tabloyu sorgulamak zaman, benzersiz bir kimliği kullanarak sonucu kaydedin. İşte benim çözüm ile sorun. Çok uzun olabilir beri bir id olarak sorgu kullanamazsınız ve bazı işletim sistemleri reddedebilir. Peki ben ile geldi, bu gibi otomatik artan id ile birlikte başka bir dosyadaki tüm sorguları saklamak için:
0->>SELECT * FROM table
1->>SELECT * FROM table WHERE foo = bar
Siz anladınız. Yani sorguyu çalıştırmadan önce varsa, bu kimliği kullanarak kimliği ve yük almak, geçerli sorgu olup olmadığını görmek için bu dosyayı kontrol edin. Sen aynı önbellek dizininde bu dosyayı saklayabilirsiniz.
- Güncelleştirmek zaman, sadece bu gibi önbelleğe kayıtlarını temizlemenizi tabloya veri eklemek veya silmek: $ cache-> temiz ('all'). Aynı sorguları çalıştırmak olacaktır beri id dosyasını silmeniz gerekmez. Ve eğer merak ediyorsanız, bu dizinde o olacak, sadece temiz önbellek dosyaları, her tablo için bir dizin dolayısıyla ihtiyaç.
Iyi. Hatta bir ömür boyu ayarlanır (onlar sonsuza kadar var olabilir) veya u bir güncelleştirme çalıştırmak zaman, kendiniz temizlemek eklemek veya silmek beri ur önbellek için autoClean zorunda değilsiniz.
Çirkin. Herhangi bir test, yük veya kaydetmek iki (ya da üç, biz yeni bir sorgu için yeni bir kimliği kaydetmek gerekir) dosya sistemi istekleri yapacaktır.
Ben bu kullandım ve Zend_Cache_Core ve Zend_Cache_Backend_File kullanarak çalışıyor. Ben tam bir çerçeve kullanarak değilim, ama sen bütün çerçevesini kullanmak eğer dizinleri, id dosyalar oluşturmayı yapıyor olacak bir soyut model sınıf oluşturmak gerekir, ve modeli çocuk sınıflar için önbelleğe alma böylece ben Zend_Cache modülünü kullanabilirsiniz (ki o zaman uzatacaktır).
Ben md5 kullanarak her tablo için bir id nin dosyası oluşturmak zorunda bir çözüm olabilir burada gördüm. Ben bunu denemek ve size geri alırsınız. Ben, bu APC ile çalışmak nasıl bilmiyorum.