문제

내 PHP 스크립트에서 문자열을 구문 분석 한 후 파일에 일부 데이터를 쓸 필요가 있습니다 (존재하지 않으면 생성 한 후).파일을 작성하기 전에 문제를 피하기 위해 독점 잠금이 필요합니다. 이것은 내 코드입니다 :

foreach ($elements[0] as $current) {
    $file_handler = fopen($my_folder . "/" . $current . ".txt", "a");
    $locked = flock($file_handler, "LOCK_EX");
    while (!$locked) {
        usleep(500000);
        $locked = flock($file_handler, "LOCK_EX");
    }
    //got lock
    fwrite($file_handler, $mystring . "\n");
    //release lock
    flock($file_handler, LOCK_UN);
    fclose($file_handler);
}
return;
.

이제는 무언가가 작동하지 않는 것 같습니다. fopen 파일을 만드는 것이지만, 내 코드는 내부에서 루프로 들어가는 것 같습니다 (파일이 만들어 지지만 내부에는 쓰지 않았습니다).뭐가 잘못 됐니?

도움이 되었습니까?

해결책

상수 대신 문자열로 잠금을 전달하는 것입니다.

시도 :

$locked = flock($file_handler, LOCK_EX);
.

lock_ex

주위에 누락 된 큰 따옴표를 주목하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top