MySQL veritabanı PHP önbellek sistemi oluşturma?

3 Cevap php

Ben sık sık uzak web sayfaları veri sıyırıp bir web servisi oluşturma. Bu verileri kazıma sonra, ben kullanmak için basit bir bilgi çok boyutlu bir dizi var. Kazıma işlemi oldukça benim sunucuda vergi olduğunu, ve sayfa yükleme bir süre alır. Ben bunu bir json kodlanmış bir dize olarak depolanan çekti bilgilerin bir dizi uzaktan web sayfası başına bir satır oluşturmak MySQL veritabanı kullanarak basit bir önbellek sistemi ekleyerek düşünüyor edildi. Bu yeterince iyi bir sistem mi? Veya web sayfası başına bir metin dosyası gibi bir şey daha iyi bir fikir olurdu?

3 Cevap

Eğer birden fazla web sayfalarını kazıma konum ve ısrarla önbelleğe alınmasını verilerinize istediğiniz beri, birkaç seçeneğiniz var - hangi iyi MySQL gibi memcache veya bir veritabanı kullanmak olacaktır. Eğer veri serisini / serialize zorunda, ve dosya sistemi okurdum çünkü metin dosyaları kullanarak, iyi bir fikir değil. Bir veritabanı veya memcache sorgulamak için birçok kez daha etkilidir.

Muhtemelen biraz kalıcı olması için önbellek için arıyorsanız bu yana, MySQL ile gidiyor öneririm. Siz sadece çözümlü JSON nesne her öğe için bir sütun otomatik artan birincil anahtarı olan bir tablo oluşturmak istiyorum. (MySQL şu anda diziler desteklemiyor unutmayın. Onları taklit etmek için, ilişkisel tabloları kullanmak gerekir, ya da dizi verileri serialize ve bir metin alanına bunu sağlayacak. Eski yöntemi tercih edilir).

Bir sayfa kazımak her zaman, veritabanında o ayrı bir sayfanın bilgilerini güncellemek için UPDATE deyimi çalışır. Eğer benzersiz sayfası (URL / vb) tanımlamak için kullanmak ne olursa olsun benzersiz bir dizin belirtirseniz, optimum look-up performansı elde edecek.

Eğer 1 sunucu üzerinde yerel önbelleğini saklamak arıyorsanız (örn. mysql sunucu ve http sunucusu aynı kutu üzerinde ise), size gelen bir önbellek hizmeti olan APC kullanarak daha iyi olabilir PHP ile.

(Örn. özel bir önbellek kutu) uzaktan veri depolamak için arıyorsanız o zaman Memcache yerine MySQL ile giderdim.

"Eğer tüm bir çekiç olduğu zaman ..."

Ben don 't özellikle büyük APC yapılandırmaları, 64 sahip olma eğilimi - 128MB max. (Eğer birden fazla örneğini çalıştırırsanız çok daha) memcache gigabayt veya belki daha fazla bir çift gidebilirsiniz. Her ikisi de geçicidir - Bir Apache yeniden başlatma veya Memcache (ikincisi biraz daha az, ya da sık sık) verileri kaybedersiniz

Bu önbelleği üretmek için verileri işlemek için hazırız ne sıklıkta, ardından bağlıdır, ve bu ne kadar önbellek aksi için yararlı olabilir. Eğer sayfaları yeniden kazınmış hafta önce iyi olsaydı - Mysql tamamen uygun bir yedekleme deposu olduğunu.

Önbelleğe & ediliyor kaç öğe bağlı olarak potansiyel pther seçenekleri, Eğer önermek gibi verilerin ne kadar büyük, bir dosya tabanlı önbellek, SQLite veya diğer sistemleri vardır.