PHP / MySQL: tabanlı büyük bir web sitesi veritabanı oluşturarak doğru yolu

5 Cevap php

Ben bir film sitesi kuruyorum, IMDB.com gibi .. Ben PHP ve hiç programlama gerçekten yeni ama ben tabii bazı kitap ve StackOverflow var :)

Zaten sürü iş yaptım, ama şimdi ben sadece film verilerini depolamak ve geting için (çok-çok ilişkileri) kod fazla 600 satır (PHO) sayfa başına ve 20'den fazla veritabanı tabloları var

Kod çoğu veri ve döngüler almak / eklemek için MySQLi sorguları (hazırlanan tabloları) vardır. Hiçbir şey fantezi, sadece temel PHP / MySQL.

Ben bazı sorular var:

  • Bu MySQLi her SQL sorgusu için tablolarını ya da sadece iç PHP / veritabanı sorguları için eski MySQL kullanımı ve kullanıcı girişi sadece hazırlanmış deyimleri bırakmak daha iyi kullanmak için tavsiye edilir?

  • Tüm film verilerini almak ve ben daha 16 farklı tablolardan veri almak gerekiyor göstermek. Ben bir MySQL tablo başına sorgusu (somethimes daha fazla) ve döngüler çok kullanın. Bu bir web sitesi çalışması için gereken doğru yoldur? Yani .. bu normal mi??

  • Nasıl kod okuma kolaylaştırmak için kolaylaştırabilirsiniz? Ben harici dosyalara tüm bu sorguları ayrı klimalı miyim? Her tablo sorgu işlemek için işlevleri oluşturabilir miyim?

Bana bir el verebilir ve belki de doğru böyle bir web sitesi oluşturmak için biraz daha fazla öneri var umuyoruz.

Teşekkürler!

5 Cevap

Bakarak ya da web siteniz için bir web framework kullanarak düşünün.

symfony CakePHP CodeIgniter

Daha genel olanlardan bazılarıdır. Onlardan öğrenmek eğer bir şey.

Yukarıdaki anwsers belirtildiği gibi ben de MVC tasarım deseni impliments bir çerçeve kullanarak sizi işaret eder. Bununla beraber çerçeveler çoğunda yerleşik bir ORM var ama onlar Senfoni veya EZPDO bakabilirsiniz yoksa (M) VC daki Model içine kravat başka iyi ORM olduğunu.

CodeIgniter oldukça hızlı bootstrap sağlayacak çok hızlı ve hafif MVC framework olduğunu ama aynı zamanda ZF (ZendFramework) içine bakmak isteyebilirsiniz. ZF büyük bir çerçeve özellik seti vardır ve genel olarak oldukça esnektir.

Bunun ötesinde senin okur ve ayırmak emin olun Model veya tercih ORM için aramaları ya da sizin yazıyor. Bu büyük performans için birden fazla MySQL kutuları veri köle ama işe başlamak için bir veritabanı motorunu kullanmanıza olanak sağlar sağlayacak.

Eğer veritabanı isabet vs veri / nesnelerini önbelleğe böylece Memcached kullanma yeteneği ekleyin.

Önbelleği kullanırken bir veritabanı güncelleme için önbelleği sona nasıl biraz düşünce koymak. Bir veritabanından veri seçme bir görünümde görüntülenecek ve bu veri değişmedi Diğer bir deyişle eğer size veritabanı vurmak için her zaman gerekmez ziyade bellekten çekin. Veri aslında değiştirmek gelmez kez re-cache yeni veri sonra bayat ve değil böylece önbellek geçersiz isterdim.

memcached: http://www.danga.com/memcached/ '

-Facebook da bir versiyonu var

CodeIgniter - http://codeigniter.com/

EZPDO - http://www.ezpdo.net/blog/?p=2

ZendFramework - http://framework.zend.com/

  1. Hazırlanan tablolar için kendi iç sorguları için sadece iyi. Tüm sorgular için bir strutured bir yaklaşım olacak.

  2. Peki bu size gösteren konum ne bağlıdır. Ama normalde daha fazla tablodan ihtiyacınız verileri almak için katılır kullanabilirsiniz söyleyebilirim. Sen çok daha az doğru verileri almak quering gerekir, ve tüm verileri gösteren konum, tek bir film için bir şekilde bağlı olduğu gibi geliyor.

  3. Peter D yorum olarak, ben görünümünden veritabanı taşıma dışarı ayırmak öğrenmek için bir web framework kullanarak öneriyoruz. Şimdi bir nesne yönelimli yaklaşım kullanıyor musunuz? Bu çerçevelerin bazı uygulamak MVC deseni bakmak, o gidiyorsun alırsınız.

Like Peter D mention before add this one to the list of framework to use. Zend Framework http://framework.zend.com Open source and free.

  1. Bu mysqli kullanmak için tavsiye edilir ...

Kesinlikle MySQLi, ama bu kodlama başlatmak eğer farkı anlamak için T-SQL temelini kavramak gerekir, tek başına büyük bir soru bu.

  1. Tüm film verilerini almak için ...

Bu şeylerin bir sürü bağlıdır. Veritabanı boyutu. Aranan sonuçlar görüntülenir gereken bilgileri, kullanıcı görünümünde görüntüleme vs sorguları tepki süresini yani. Eğer, hakkında JOIN Union biliyor musunuz?

  1. Nasıl kod için kolaylaştırabilirsiniz ...

Evet tüm tezler sorulara. www.w3schools.com/php/ herhangi bir yardım olabilir ve MVC deseni öğrenebilirsiniz eğer. Programlama dili bir sürü bu gün Yararlı. Belki bir çerçeve burada size yardımcı olacaktır

Bu sorulara:

"To get all the movie data and show it I need to get the data from more than 16 different tables. I use one MySQL query per table (somethimes more) and lots of loops. This is the correct way a website need to work?? I mean.. this is normal???"

Ben doğru anlamak No., sen verilere bağlı olarak size veritabanından almak konum JOIN çeşit kullanıyor olmalıdır. Çok büyük miktarlarda veri sonuçlarını alma, ve sonra PHP yalnızca istediğiniz parçaları seçmek dışarı veritabanı göstermek istiyorum sadece kayıtları / bilgi alma / sıralama işini yapmasına izin daha yavaştır.

O olurdu, böylece kodu ile birlikte "uygulamada" teknikleri bir sürü kapsar - http://www.dmcinsights.com/phpmysql2/: Ben çok genel olarak PHP ve MySQL / Veritabanları kapakları biraz tarihli ama kavramak çok kolay kitap tavsiye öğrenmek için harika.

Orada güncellenmiş bilgi ile bir görünüşte üçüncü bir baskı olduğunu, ama ben bakmadım.