Katıldığım en büyük ölçekli projenin mimarisinin kaba bir diyagramı.
Gerçek mimari belgelerden uyarlanan ve tipik bir MVC yaklaşımı ile birlikte tipik bir n-katmanlı yaklaşıma benzeyen bir şekilde sunulan sadece temel bir taslaktır . Gördüğünüz gibi, mantık ve veri katmanları, daha az bilinen bir PHP çerçevesi olan Recess'ten esinlenen bir hizmet katmanı ve daha özel olarak bir REST API'si aracılığıyla bağlanmıştır .
Tekerleği yeniden icat etme
Üç çerçeveyle çalışıyorum:
Zend Çerçevesi
Etkileyici bir şekilde yazılmış bir kod tabanı ve kapsamlı özellik listesi ile PHP çerçevelerinin devi . Büyük ölçekli uygulamalarda, çerçeveyi daha sık değiştirdiğinizi göreceksiniz ve ZF'nin kod tabanını çalışmak için en keyifli buluyorum. Ancak dikkat edin, bu giriş seviyesi bir çerçeve değildir .
Kohana
Kohana, CodeIgniter'in bir çatalı olarak başladı ve başlangıçta kullanmamam için yeterli sebepti. Günümüzde, Hiyerarşik MVC yaklaşımını izleyerek kendini birbirinden ayıran sağlam ve zarif bir çerçeveye dönüşmüştür . HMVC, MVC'den daha fazla modülerleştirmeye izin verir . Diyagramdaki proje için Kohana'nın HMVC'sini ZF'ye uyarladım, ancak Kohana'yı daha küçük projeler için kullanmaya ve daha büyük için de düşünmeye başladım.
CodeIgniter
Bunu sadece miras aldığım eski bir proje yüzünden kullanıyorum, mümkünse kaçının.
Diğer cevapların işaret ettiği gibi, bir ORM her zaman işe yarar. Doktrin'i yoğun bir şekilde kullanıyorum ve CouchDB ve MongoDB için yepyeni haritacılarına bir göz atmalısınız . Ölçeklenebilirlik büyük ölçekli uygulamalarda bir zorunluluktur ve NoSQL çözümlerini değerlendirmelisiniz .
Tüm söylenenler, hatırlanması gereken önemli şey, daha büyük uygulamaların genellikle benzersiz zorlukları olmasıdır. Her popüler üçüncü taraf çözümünü değerlendirmelisiniz ve muhtemelen birkaç belirsiz çözümden çok şey kazanacaksınız. Recess'ü ilk değerlendirdiğimde üretime hazır olmaktan uzaktı ama yaklaşımı onu projeye dönüştürdü.
Verim
Tipik web sitelerinde, basit çıktı önbellekleme ve opcode önbellekleme ile kurtulabilirsiniz, ancak büyük ölçekli uygulamalarda gerçekten bellek önbelleğe almayı düşünmelisiniz, ki bu en yaygın olarak memcached etrafında inşa edilir .
xdebug çoğunlukla hata ayıklayıcı olarak bilinir, ancak bir profil oluşturucu olarak da kullanılabilir. Son zamanlarda Zend Server kullanmaya başladım ve kesinlikle kod izleme özelliklerine bayılıyorum . Ne yazık ki bunlar Topluluk Sürümünde mevcut değildir , ancak xdebug oldukça iyi bir alternatiftir.
Apache kullanıyorsanız , cehennemi optimize ettiğinizden emin olun . nginx ve lighttpd'nin vardır görünüşte daha iyi seçimler bilge, performans, ama onlara çok kullanmadıysanız ve gerçekten söyleyemem.
Veritabanına gelince, Doctrine'in sorgu ve sonuç önbelleklemesi özellikle memcached ile birlikte harikalar yaratıyor . Ve elbette, ön ucu unutamayız. Yahoo'nun Olağanüstü Performans ekibi, en iyi uygulamaların kapsamlı bir listesini hazırladı . Gerçekten bir ön uç geliştirici değilim, ancak solo projelerde harika sonuçlar gördüm.
Son olarak PHP'nin bakmaya değer yepyeni bir çöp toplama mekanizması var .
Güvenlik
PHP güvenlik dünyası en az söylemek gerekirse kaotiktir. Uzman değilim, bu yüzden aşağıdakileri genel ipuçları olarak ele alın:
Açık Web Uygulaması Güvenlik Projesi
Çok iyi şeyler var, ama hızlı bir bakış için ilk on listeden başlamalısın . Ve bu yaygın güvenlik açıkları için PHP çözümlerini araştırın.
Yığın güvenlik açıkları
PHP'nin açık hatalarını periyodik olarak izlemek iyi bir alışkanlıktır . Kendiniz uzman olmasanız bile, neredeyse her zaman güvenlik tehditleriyle ilgili geçici ipuçları vardır. Ve elbette, alışkanlığı yığının diğer kısımlarına, özellikle de web sunucusu ve veritabanı gibi en savunmasız olanlara genişletmelisiniz.
IT Security Stack Exchange'deki kalabalık , daha eğitimli yanıtlarda size yardımcı olabilir.
daha fazla okuma