Инструменты пользователя

Инструменты сайта


programming:php:flock

Flock - блокировка файлов

Моя блокировка в Битриксе:

    $is_locked = MyLock::IsLocked('test.lock');
    if(!$is_locked){
        echo "=== [test.lock] Run sync ===\n";
        //echo "Create file and lock it.\n";
        $h = MyLock::Lock('test.lock');

        echo "New file status locked:";
        var_dump(MyLock::IsLocked('test.lock'));
           
        $a = Sync::ad_resources_to_local();
        print_r($a);
    
    }else{
        echo "=== [test.lock] Sync is runing ===\n";    
    }
// Сохранение в $lock_file обязательно, иначе handle помрёт и файл автоматом закроется
if(!flock($lock_file = fopen("my_script.lock", 'w'), LOCK_EX | LOCK_NB))
  die("Already runninng\n");
  	function mkfile($filename, $data='', $chmod=0644) {
		if (($h = @fopen($filename, 'w')) && flock($h, LOCK_EX | LOCK_NB, $wouldblock) && !$wouldblock) {
			@fwrite($h, $data);
			@fclose($h);
			@umask(0000);
			@chmod($filename, $chmod);
			flock($h, LOCK_UN); 
			return $data;
		}
	}
programming/php/flock.txt · Последнее изменение: 2017/03/27 11:26 — artur

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki