PHP betikleri çok dişli olmadığından, ben kritik bölümleri alakalı inanmıyorum. Ben birden çok örneği paralel olarak çalıştırılır çünkü bir yarış durumu olduğunu kabul ediyorsunuz, ama bir kritik bölüm sorununuzu çözmez.
Eğer bir dosya tabanlı oturum işleyicisi kullanarak ediyorsanız, temel bir flock()
deneyebilirsiniz. Bir veritabanı kullanıyorsanız, kilitleme mekanizması motor kendi (tercihen, satır düzeyinde) kullanarak deneyebilirsiniz. Memcached kullanıyorsanız, bir dağıtılmış kilit sisteminin uygulanması deneyebilirsiniz.
Siz de geniş bir kilit uygulamak istemez. Mümkün olduğunca granül şey (belki de, oturum kimliği bağlı) isteyeceksiniz. Tüm oturum davranışlarını getirilmeye çalışırsanız, büyük bir darboğaz tanıtacağız.
Veritabanı dünyasında (ve başka yerlerde), iyimser "kilitler" genellikle tüm ihtiyacınız vardır. Onlar artırılır basit bir sayaç içerir. Sayısı "off" (çarpışma) kayıt güncellenmemiş ve yeniden almak ve uygun olarak farklılıkları uygulayabilirsiniz ise. Bu denemeniz ile birlikte bir UPDATE table WHERE count = lastcount
türü bir şey var. Bu genellikle hile yok.
Tabii ki, bu hedefe ulaşmak için dosya kilitleme, SYSV semafor (idareli) ve diğer çeşitli yöntemler kullanabilirsiniz. Sadece bu bir yarış durumu gibi geliyor, ama konuları ile ilgisi yoktur, hatırlamıyorum.