Semaphoren nicht sauber gelöscht!
Richard
- php
0 Tom
hi zusammen,
ich benutze semaphoren zum absichern von exclusiven prozessen. die 2 funktionen werden so aufgerufen:
function mach_was() {
$filename = "irgendwas/test.txt";
if (!file_exists($filename)) {
$fp=fopen($filename,'w');
fclose($fp);
}
$SEM_ID = sem_lock($filename);
[... HIER FÜHRE ICH WAS AUS ...]
sem_unlock($SEM_ID);
@unlink($filename);
}
function sem_lock ($filename) {
if(function_exists('ftok')){
$sem_key = ftok($filename, "A");
$sem_id = sem_get($sem_key, 1);
sem_acquire($sem_id);
return $sem_id;
}
}
function sem_unlock($sem_id) {
if(function_exists('sem_release')){
sem_release($sem_id);
}
}
nun habe ich das problem, daß sich im speicher semaphoren sammeln. obwohl ignore_user_abort() aktiviert ist. das macht den ganzen server platt. kann mir da jemand helfen?
Hello,
vielleicht solltest Du Dich mit register_shutdown_function()
http://de.php.net/manual/de/function.register-shutdown-function.php
anfreunden, oder aber anstelle von Semaphoren Temp-Files benutzen. Die werden vom System auch wieder automatisch beseitigt.
Oder aber eben die Funktion flock(), die aber angeblich auf bestimmten Multiprozesorsystemen noch Zicken machen soll. Ich konnte das aber bisher noch nicht verifizieren.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom