PluginProbe
JetBackup – Backup, Restore & Migrate / 3.1.21.3
JetBackup – Backup, Restore & Migrate v3.1.21.3
3.1.23.6 3.1.23.5 3.1.23.3 3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 All 82 releases
backup / src / JetBackup / IO / Lock.php
Lock.php
40 lines 1.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace JetBackup\IO;
4
5 if (!defined( '__JETBACKUP__')) die('Direct access is not allowed');
6
7 class Lock {
8
9 private static $_files;
10
11 private static function _getFile($filename) {
12 if (!file_exists($filename)) touch($filename);
13 if (!isset(self::$_files[$filename])) self::$_files[$filename] = @fopen($filename, 'r');
14 return self::$_files[$filename];
15 }
16
17 private static function _closeFile($filename) {
18 if (!isset(self::$_files[$filename])) return;
19 @fclose(self::$_files[$filename]);
20 unset(self::$_files[$filename]);
21 }
22
23 public static function LockFile($filename, $block = false): bool {
24 if (($fd = self::_getFile($filename)) === false) return false;
25 $flag = LOCK_EX;
26 if (!$block) $flag |= LOCK_NB;
27 $wouldblock = 0;
28 $ret = flock($fd, $flag, $wouldblock);
29 if ((!$block && $wouldblock) || $ret === false) return false;
30 return true;
31 }
32
33 public static function UnlockFile($filename) {
34 if (
35 ($fd = self::_getFile($filename)) === false ||
36 flock($fd, LOCK_UN) === false
37 ) return;
38 self::_closeFile($filename);
39 }
40 }