Как вы удаляете или редактируете файл в PHP, когда он читается?

Предположим, что есть файл на PHP. Файл постоянно читается. Я хочу сначала запретить пользователям доступ к файлу, а затем удалить или отредактировать файл. Как я могу это сделать?


person Long Le    schedule 21.04.2016    source источник


Ответы (1)


Пожалуйста, обратитесь к этому ответу. блокировка файлов в php

Это закрывает запирающую часть. Однако для доступа к файлу вам нужно сделать цикл, пока блокировка не будет снята. Вот примерный алгоритм.

   define(MAX_SLEEP, 3); // Decide a good value for number of tries
   $sleep = 0; // Initialize value, always a good habit from C :)
   $done = false; // Sentinel value 
   $flock = new Flock; // You need to implement this class
    do {
        if (! $flock->locked()) { // We have a green light
            $flock->lock(); // Lock right away

            //DO STUFF;

            $flock->unlock(); // Release the lock so others can access
            $done = true; // Allows the loop to exit

        } else if ($sleep++ > MAX_SLEEP) { // Giving up, cannot write
            // Handle exception, there are many possibilities:
            //     Log exception and do nothing (definitely log)
            //     Force a write 
            //     See if another process has been running for too long
            //     Check for timestamp of the lock file, maybe left behind after a reboot
        } else {
            sleep(SLEEP_TIME);
        }
    } while(! $done);
person chelista    schedule 21.04.2016