LegacyFilesystemLock.php
public function lock($blocking = false)
    {
        if ($this->handle) {
            return true;
        }

        $error = null;

        // Silence error reporting
        set_error_handler(function ($errno, $msg) use (&$error) {
            $error = $msg;
        });

        if (!$this->handle = fopen($this->file, 'r')) {
            if ($this->handle = fopen($this->file, 'x')) {
                chmod($this->file, 0444);
            } elseif (!$this->handle = fopen($this->file, 'r')) {
                usleep(100); // Give some time for chmod() to complete
                $this->handle = fopen($this->file, 'r');
            }
        }
        restore_error_handler();

        if (!$this->handle) {
            throw new IOException($error, 0, null, $this->file);
        }

        // On Windows, even if PHP doc says the contrary, LOCK_NB works, see
        // https://bugs.php.net/54129
        if (!flock($this->handle, LOCK_EX | ($blocking ? 0 : LOCK_NB))) {
            fclose($this->handle);
            $this->handle = null;

            return false;
        }

        return true;
    }
public function lock($blocking = false)
    {
        if ($this->handle) {
            return true;
        }

        $error = null;

        // Silence error reporting
        set_error_handler(function ($errno, $msg) use (&$error) {
            $error = $msg;
        });

        if (!$this->handle = fopen($this->file, 'r')) {
            if ($this->handle = fopen($this->file, 'x')) {
                chmod($this->file, 0444);
            } elseif (!$this->handle = fopen($this->file, 'r')) {
                usleep(100); // Give some time for chmod() to complete
                $this->handle = fopen($this->file, 'r');
            }
        }
        restore_error_handler();

        if (!$this->handle) {
            throw new IOException($error, 0, null, $this->file);
        }

        // On Windows, even if PHP doc says the contrary, LOCK_NB works, see
        // https://bugs.php.net/54129
        if (!flock($this->handle, LOCK_EX | ($blocking ? 0 : LOCK_NB))) {
            fclose($this->handle);
            $this->handle = null;

            return false;
        }

        return true;
    }
public function lock ( $ blocking = false ) { if ( $ this -> handle ) { return true ; } $ error = null ; // Silence error reporting set_error_handler ( function ( $ errno , $ msg ) use ( & $ error ) { $ error = $ msg ; } ) ; if ( ! $ this -> handle = fopen ( $ this -> file , 'r' ) ) { if ( $ this -> handle = fopen ( $ this -> file , 'x' ) ) { chmod ( $ this -> file , 0444 ) ; } elseif ( ! $ this -> handle = fopen ( $ this -> file , 'r' ) ) { usleep ( 100 ) ; // Give some time for chmod() to complete $ this -> handle = fopen ( $ this -> file , 'r' ) ; } } restore_error_handler ( ) ; if ( ! $ this -> handle ) { throw new IOException ( $ error , 0 , null , $ this -> file ) ; } // On Windows, even if PHP doc says the contrary, LOCK_NB works, see // https://bugs.php.net/54129 if ( ! flock ( $ this -> handle , LOCK_EX | ( $ blocking ? 0 : LOCK_NB ) ) ) { fclose ( $ this -> handle ) ; $ this -> handle = null ; return false ; } return true ; }
Lock the resource.

@param bool $blocking Wait until the lock is released

@throws IOException If the lock file could not be created or opened

@return bool Returns true if the lock was acquired, false otherwise
Lock the resource .