Ne php önlemek için / mysql / ajax ağır dayanarak okur / yazar

4 Cevap php

i okur ağır dayanır ve her saniye yazıyor, bir Web uygulaması oluştururken temel şeyler önlemek için ne olduğunu merak ediyordum.

Para katılır online oyun düşünün.

Örneğin sürekli (1) tarayıcısını güncelleyen bir javascript var, db güncelleştiren bir cronjob çalışan var (2), Orada ajax veya POST (3) üzerinden gönderilen kullanıcı girişi olduğunu ve tüm bu işlemleri gerçekleştirirken birden fazla kullanıcı var her saniye (4).

Ilgili para böylece tüm verileri (5) doğru şekilde okumak ve yazılı olmak zorunda da vardır. Yedekleri (6) önemli Ve böylece çöker bu durumda veri doğru şekilde restore edilecek gelmiştir.

Kesinlikle akılda tutulması gereken şeyler nelerdir böyle karmaşık bir uygulama oluştururken aklınızda tutmanız gereken pek çok şey.

Bu konudaki düşünceniz nedir bilmek istiyorum, teşekkür ederim!

4 Cevap

Bant genişliği sorunu ise tarayıcılar için çıktı Gzip Sıkıştırma düşünün. CPU güç bir sorun ve gzip etkindir ise Veya, onu devre dışı ama artan bant genişliği kullanımını risk.

Böyle css ve görüntüler, javascript vb gibi statik dosyaları tarayıcıda önbelleğe ve uzun bir süre sonra sona erecek ayarlayın. Bu tekrar kullanıcıların alışkanlık onlar zaten bir dosyanın aynı sürümünü istemek için bant genişliği vb kullanabilirsiniz demektir.

Kullandığınız querys çalıştırın kriterler. Hiç mümkün optimize. Belki küçük olanları içine uzun sorguları ayrýlýyoruz bir performans artışı olabilir. Lütfen darboğazları bulmak için xdebug gibi bir profiler kullanın.

Her yüke yeni bağlantılarda kaynak tasarrufu kalıcı sql bağlantılarını kullanın.

Eğer ana veritabanına eklemek hiç bir ayna veritabanı ve zaman yaratın, ikinci birine aynı veri eklemek. Bir yedek olarak hizmet olarak ikinci veritabanından okumak Yüklü. Eğer farklı bir sunucuda ikinci bir veritabanı olan deneyin. İkinci bir veritabanı yapılamadı değilse, sizin gibi Cron yedekleri iyi çalışması gerekir bahsetti.

Sonraki şey ... ajax uygulamanızda gerçekten nessasary nedir? Onsuz çalışacak mı? Ajax içinde ekstra istekleri ile sitenize unessasary kabartmak eklemek vermeyin.

I site / app özelliklerini bilmiyorum ben daha yazmak olamaz.

Cache: Kullanım Memcached gibi azından mümkün olduğu veritabanı vurmak için deneyin.

Çok şişkinlik olmadan, hızlı bir web sunucusu veya webservices, farklı sunucuları veya farklı görevleri gerçekleştirmek için farklı portlar üzerinde çalışan komut dosyalarını kullanın.

Ben "düşünmek ne" ben "ne önlemek için" bu soruya cevap veriyorum emin değilim, ama yerine ...

  • Önbelleğe içine bak - referans veri ve diğer "statik" (veya statik veri yakın) için php sayfaları ve bellek önbelleğe alma (APC, memcache) için opcode önbelleğe alma.
  • Eşzamanlılık sorunları içine bak - Eğer iki kişi "aynı anda" güncellenmesi ve nasıl bir dışarı yedeklemek için olan durumlarda kapalı olduğundan emin olun.
  • mysql replication içine bak.
  • Çok fazla ajax önlemek için deneyin. Ajax kadar basit çünkü Bazen ekranda veri güncelleme miktarı ile coşma. çok simplier techincal yönlerini yapmak için (eğer mümkünse), yani bazen biraz iş mantığı / gereksinimleri değiştirebilirsiniz.
  • Böyle karmaşık bir sistem ile iyi kullanım durumları var ve sık sık test edin.

Bunlar çok küçük, ama okuma ve yazar. (Umarım) sadece iki ya da üç tablo birleştirme ediyoruz.

Ayrıca, sadece bir kullanıcı oturumu için her şeyi ya da bir küresel önbellek depolama, bellek oyunun kendisi için her şeyi yapabilirdi. Daha sonra veritabanına onlar değiştirmek her zaman mali detayları yazmak isterdim, ama bir tek oyuncunun nakit güncellenmesi başında, bir veya iki tablo katılmak olmalıdır. Muhtemelen de ne birinin hesabına aktarılmıştır ne para miktarı zaman görmek için, bir günlük / işlemleri tablo isterdim.

Her neyse, ben kısa sorgularda performansı hakkında derece endişe ediyorum; veritabanları bu şaşırtıcı derecede iyi.