멀티 스레드 쓰기를 다루는 PHP 파일 쓰기 방법:
Php 코드
function file_write($file_name, $text, $mode='a', $timeout=30){ $handle = fopen($file_name, $mode); while($timeout>0){ if ( flock($handle, LOCK_EX) ) { $timeout--; sleep(1); } } if ( $timeout > 0 ){ fwrite($handle, $text.'\n'); flock($handle, LOCK_UN); fclose($handle); return true; } return false; }
flock(int $handle, int $Operation) 함수에서 작동하는 핸들은 다음과 같아야 합니다. 이미 열려 있는 파일에 대한 포인터입니다.
작업은 다음 값 중 하나일 수 있습니다.
공유 잠금(읽는 프로그램)을 얻으려면 작업을 LOCK_SH로 설정합니다(PHP 4.0.1 이전 버전에서는 1로 설정). .
배타적 잠금(프로그램 작성)을 얻으려면 작업을 LOCK_EX로 설정합니다(PHP 4.0.1 이전 버전에서는 2로 설정).
잠금(공유 또는 배타적)을 해제하려면 작업을 LOCK_UN으로 설정합니다(PHP 4.0.1 이전 버전에서는 3으로 설정).
lock()이 잠겨 있을 때 차단되지 않도록 하려면 작업에 LOCK_NB를 추가하세요(PHP 4.0.1 이전 버전에서는 4로 설정).