"yüksek trafik" için php

5 Cevap

Ben PHPs "olası" zayıflığı "eşzamanlılık" nasıl işleyeceğini olduğunu okudum. Sadece oturumlar ve çerezler, kullanıcı durumunu izlemek için, nasıl yüksek doğruluk ile aşağıdaki durumlarla başa PHP yapabilirsiniz:

  1. birden fazla kullanıcı envanter sadece 1 stok vardır bir madde ile kontrol (dilbilgisi hataları için özür dilerim, ama zaten oldukça fazla resmi olsun)

  2. birden çok kullanıcı aynı oturum açma bilgilerini kullanarak aynı kullanıcı hesabınıza giriş

  3. (bu nadiren gerçek hayatta olur gerçi) aynı anda bir aynı görüntüyü düzenleme birden çok kullanıcı

veya çoklu diş taşıma talepleri herhangi diğer işlemler

(Ben burada terimleri yanlış varsa özür dilerim)

5 Cevap

Bunlar gerçek eşzamanlılık konular değildir. Bir ortam olarak PHP iplik yeteneği yoksun olduğu doğru olsa da, bir PHP modülünü kullanan herhangi bir web sunucusu tüm aynı kaynakları kullanarak, içine, onların kendi aktif PHP ortamı ile her çoklu konuları olacaktır. Java,. Net, Perl, veya herhangi bir diğer web uygulama dili ile bu sorunların çalıştırmak istiyorum.

  1. Sen başkası kontrol ederken muhtemelen yazma kilidi ile diğer kullanıcıların ödeme işlemi okumak ve koşamam, böylece veritabanı üzerinde bir işlem gerekir. Bu bir veritabanı işlem mesele, bir dil parçacığı sorun değildir.
  2. Bu ya bir diş sorunu değildir. Oturumlar mevcut tüm araçları ile oldukça önemsiz, ve ben herhangi bir dil platformda bir uygulama "bir iplik seans başına" tarzı (yani uygulamak zor, non-önemsiz olacaktır ve sadece yükü eklersiniz) duymadım. Sen (isterlerse kullanıcı farklı sekmelerde veya web tarayıcıları birden çok kez oturum açabilirsiniz) çoklu oturum anahtarları tek bir hesap için aktif olmaya izin, ya sen (bütün oturum anahtarları her zaman temizlenir yok bir giriş gerçekleşirken, böylece sadece bir belirteç) aktiftir.
  3. Bir garip biri, ama ben diş ya burada uyuyor nasıl emin değilim. Resim düzenleme tarayıcı istemci tarafında yapılması gerekir. Siz "Konu" herhangi bir dilde bir kullanıcının tarayıcısı açık devam edemez ... HTTP gibi çalışmıyor. Onlar "kurtarmak" ve geri göndermek vurmak kadar onlara resim göndermek istiyorum ve bitirdiniz. Yine, birbirlerinin değişikliklerin üzerine kullanıcılar hakkında endişeli iseniz, sadece bunun üzerinde bir işlem kilit koymak olurdu. Başka düzenlerken iken bir güncelleştirme bir kullanıcıdan diğerine oluştu eğer ben muhtemelen sadece "versiyonu", her görüntü, ve, sen onların kopyasını yenilemek için gerekli diğer kullanıcıyı bilgilendirmek istiyorum ediyorum.

Bildiğim kadarıyla ben farkında değilim gibi, hiçbir dil bu görevlerden herhangi birini gerçekleştirmek için konuları kullanır. Çünkü HTTP iletişim vatansız doğası, kurabiye seans every web dili bir dayanak noktası vardır, bu nedenle olursa olsun kullanmak ne platformu için hepsi de çok aynı stratejiyi görmek için gidiyoruz Belirli bir sorunu ele.

Bunlar mutlaka PHP için sorunlar değildir. Bu seçim herhangi bir teknoloji verilen üstesinden geliştiriciler için sorunlardır.

  1. Envanter 1 almak icar Kullanıcılar PHP'nin hatası değildir. Siz geçici birileri olsa zaten kendi sepetinize eklenen olduğunda 1 görmezden ve oturum sona ermeden önce bunu satın yoksa kadar ücretsiz. Olabilir
  2. Tamam mı? Diğer kullanıcılara çıkış veya tüm oturumları yönetebilirsiniz.
  3. Yine, büyük olasılıkla bunu at the same microtime. Olmaz Olsaydı, güzel bir hata kadar atmak ve tekrar denemek için isteyin. Açıklamalarda belirttiği gibi (onlar hiç ne varsa), MySQL olaylar bu tür işlemek için yeterli yeteneklere sahiptir.

Sadece tüm diller gibi bu dosyaları kilitleme bir yol bulmak gerekir. Eğer eşzamanlılık yeni iseniz başlar here ve size sunulan farklı yöntemler üzerinde biraz araştırma yapmak olabilir.

Ama ben asıl soru bu aslında bir sorun olacak olup olmadığıdır. Ve bir çarpışma durumunda hasar ne kadar yüksek olduğu, yüksek eşzamanlılık sistemde olacak eğer. Bir çarpışma maliyeti gerçekten yüksek ise, zaten bu konuda dişlerini kesmek ve sadece ne kullandıkları yöntemler izlemek birine sözleşme dışı çalışma olabilir.

Hiç veritabanı işlemleri duydunuz? İkinci düzgün, bu (arada, PHP sorunlar değildir) tüm sorunları çözebilirsiniz.

Soru işlemler hakkında ise, o zaman cevap evet, ancak bu dilin kendisi bir özelliği değildir. İşlem güvenliği veritabanı katmanı (MySQL gibi genellikle ilişkisel veritabanı) görevidir.

Ben "ölçeklenebilir PHP mi?" Gibi soru okursanız, o cevabı da evet.

Web uygulamaları için iyi bir şey olduğu, uygulamadan tamamen herhangi bir eşzamanlılık ilgili ayrıntıları gizler çünkü PHP, sadece olabildiği kadar mükemmel "eşzamanlılık" yönetir. HTTP "web" ölçeklenebilir yapılmış gibi uygulamalar doğal ölçeklenebilir yapar. HTTP vatansız, yani PHP bir anlamda vatansız olduğunu. Bu sayede kolayca yatay ölçeklenebilirlik, örneğin (bu hala önceden bazı uygulama desteği gerektirir rağmen) uygulama kodunda değişiklik olmadan daha fazla donanım ekleyerek.

Bir açıklama için bu great articles göz atın.