Ben bu bir yıllık olduğunu biliyoruz, ancak bazı PHP kilitlemeyi kendimi araştırma yaparken ben sadece soru tökezledi.
Bu bir çözüm APC kendisi kullanarak mümkün olabileceğini bana oluşur. Bana deli diyebilirsiniz, ama bu uygulanabilir bir yaklaşım olabilir:
function acquire_lock($key, $expire=60) {
if (is_locked($key)) {
return null;
}
return apc_store($key, true, $expire);
}
function release_lock($key) {
if (!is_locked($key)) {
return null;
}
return apc_delete($key);
}
function is_locked($key) {
return apc_fetch($key);
}
// example use
if (acquire_lock("foo")) {
do_something_that_requires_a_lock();
release_lock("foo");
}
Pratikte ben sadece varolan APC tuşu, örneğin ile çarpışmayı önlemek için, burada kullanmak için bir anahtar oluşturmak için orada başka bir işlevi atmak olabilir:
function key_for_lock($str) {
return md5($str."locked");
}
Bu komut ölür veya böyle bir şey varsa sonsuza tutuluyor sizin kilit önlediğinden $expire
parametre kullanmak için APC güzel bir özelliktir.
Umarım bu cevap bir yıl sonra burada sendeler herkes için yararlı olduğunu.