Tekrar kullanımı MySQL sonuçları

2 Cevap php

Ben biraz teorik bir soru yaşıyorum: Ben üretime hazır bir çözüm yapmak veya çeşitli modüller / eklentileri geliştirmek için ya (çeşitli düzeylerde birçok PHP programcıları önce yaptığı gibi ... ve her zaman olacaktır) kendi CMS / app-çerçeve tasarımı olduğumu Ben daha sonra kullanacağız.

Her neyse, ben bütün app SQL bağlantılarını toplama ve sonra bir yerde bunları çalıştırmak üstünde düşünüyordum:

index.php:
<?php
  include ('latestposts.php');
  include ('sidebar.php');
?>

latestposts.php:
<?php
  function gather_data ($arg){ $sql= ""; }
  function draw ($data) {...}
?>

sidebar.php:
<?php
  function gather_data ($arg){ $sql= ""; }
  function draw ($data) {...}
?>

Tüm modül sistemi uygulaması henüz-to-be-figürlü, bu fikir ise şimdi, zaten yerde beynimde yüzer. Ancak, ben ilk önce SQL çalıştırmak, sonra tüm gather_data fonksiyonları yüklemek ve ardından draw fonksiyonları çalıştırmak mümkün yaşıyorum, düşünüyorum - ve sonuçları yeniden mümkün yaşıyorum!

"Ah, o:, örnekte, $sql SELECT * FROM POSTS LIMIT 10 ve $sql2 SELECT * FROM POSTS LIMIT 5, onu görmek için PHP programlamak mümkün olduğunu ise aynı SQL, ben "sadece bir kez diyoruz ve ilk 5 satır yeniden edeceğiz?

Ya da bazı DRM bu davranışı eklemek mümkündür?

Sözcükler söylemek Ancak, bu hala devam eden sadece bir fikirdir. Başarmak kolay olduğu ortaya çıkarsa, o zaman ben nasıl daha fazla soru nakleder :)

Yani, temelde: o mantıklıdır, mümkün mü? Nasıl hem evet, sonra ... herhangi bir fikir varsa?

2 Cevap

Beni yanlış anlamayın, bu akla yatkın bir fikir gibi geliyor ve muhtemelen çalıştıran alabilirsiniz. Gerçekten yararlı olacak Ama acaba. Daha hızlı olması için bir sistem neden olur? Size daha fazla denetim verecek? Geliştirme daha kolay yap?

Ben sadece, (veya bina) de uygulanan bir MVC tarzı kodlama standartlarını kullanarak bir sistem kullanarak içine bakmak iyi bir DB yapı oluşturmak ve Apache halt dışarı çimdik (veya Lighttpd gibi bir şey kullanın) olacaktır. Hiç açık kaynak yapmaya karar verirseniz size bir sürü kod daha yaygın bir kabul var olacak ve hiç onunla bir el gerekiyorsa başka bir geliştirici sağ adım ve klavyeyi almak olabilir.

Ayrıca, MySQL sorgu önbelleğe check out - Eğer sorgusu örneği ile ilgili sorgu sonuçları, sunucu tarafında önbelleğe benzer (gerçi değil bir-bir) yarar göreceksiniz. Hatta iyi ki PHP / MySQL havai bırakılır böylece sunucu bellekte depolanır ve bunu kod gerekmez.

Kenara Bütün, ben bunun mümkün olduğunu düşünüyorum. =)

Genellikle böyle bir önbellek sistemi önemli bir zaman tasarrufu elde edebilirsiniz, konuşan, ancak bellek ve karmaşıklığı pahasına. Saklamak istediğiniz daha fazla sonuç, daha fazla hafıza sürer; ve sonuç hiç tekrar kullanılacak hiçbir garantisi, özellikle büyük sonuç kümeleri var.

İkincisi, önbelleğe asla, ya da önbellek olsanız bile o tekrar çalıştırılması gereken bazı sorguları vardır. Çoğunlukla, sadece SELECT ve FİYATLARI sorguları etkin önbelleğe alınabilir, fakat siz yatan verileri değiştirdiğinizde bunları geçersiz hakkında endişelenmenize gerek. Hatta aynı sayfa görüntüleme, kendinizi vesilesiyle kendi önbellek sistemi etrafında çalışma bulabilirsiniz.

Üçüncü olarak, bu tür sorunları daha önce birkaç kez çözüldü. Birincisi, MySQL sorgu önbellek dönüm düşünün. Çoğu zaman, bu ucunda kod herhangi bir değişiklik gerektirmeden biraz şeyleri hızlandırır. Ancak, bu kayıtlar geçersiz hakkında biraz agresif, bu yüzden daha yüksek bir düzeyde bazı performans kazanabilir.

Başka düzeyi gerekiyorsa, dikkate memcached. El kayıtları saklamak ve geçersiz gerekir, ancak (gerçekten performans yararı bulacaksınız) sayfa görünümleri karşısında sonuçlarını saklayabilir ve kullanılmayan girdileri bellek tükeniyor önce sona izin verir.