Ben SQLplus üzerinden tablo X değiştirmek ve değişikliği taahhüt yoksa, o zaman (ModPHP modunda Apache altında bir PHP komut dosyası olarak çalışır) benim web appliation o kadar belirsiz bir süre bloke edecek tablo X bir değişiklik taahhüt denerse bulduk Ben SQLplus ile benim değişiklikleri işlemek.
Bu davranış doğru, ama ne istediğinizi N saniye sonra benim web uygulaması zaman aşımı var ve yerine süresiz engelleme HTTP 409 hata yayma temiz / güvenilir / basit bir yoludur.
Benim ilk düşünce N saniye sonra SIGALRM yakalamak için bir sinyal işleyici ile pcntl_alarm (N) kullanımı idi. Ama o pcntl_ * fonksiyonlar genellikle kök Apache sürecinin kendisi çocukları kontrol etmek için kullandığı sinyalleri karıştırmasını önlemek için muhtemelen, böylece derleme zamanında ModPHP Apache modülünden elided bulundu. Belki ought kendi SIGARLMs işlemek için ModPHP üzerinden çalıştırmak PHP için Zararsız olması, ama ben şu anda benim Ops ekibi ile almak istiyorum, bu yüzden bu yaklaşımı reddetmek zorunda bir mücadele değil.
Operasyonu (başarılı) veya N saniye bitene kadar benim ikinci düşünce çatal / Bir çocuk işlemini benim uygulama tablo X değiştirmek için ihtiyacı her zaman başlatmak ve ana süreç poll (bir boru belki select üzerinden ()) çocuk sahibi olmaktır (zaman aşımı + yetmezliği) geçti.
İkinci yaklaşım will iş, ama bu bana, çirkin karmaşık ve kırılgan vurur.
Herkes (Linux 2.6.9 üzerine) PHP sürümü 5.2.11 ve Apache sürümü 1.3.41 kısıtlamaları verilen iyi bir yol biliyor mu?