내 PHP 스크립트에서 문자열을 구문 분석 한 후 파일에 데이터를 작성해야합니다 (존재하지 않는 경우 파일을 만든 후). 파일을 쓰기 전에 문제를 피하기 위해 배타적 잠금이 필요합니다. 이것은 내 코드입니다.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 파일을 만들지 만 내 코드가 루프 내부에있는 것처럼 보입니다 (파일이 생성되었지만 내부에 아무 것도 쓰지 않았습니다). 뭐가 문제 야?
나는이 문제를 방지하기 위해 데이터베이스를 사용하는 것이 좋습니다. – dlyaza
DB를 저장할 수없는 많은 양의 데이터를 저장해야하기 때문에 db를 사용할 수 없습니다 (데이터가 작은 경우 데이터베이스가 괜찮을 수도 있음) 편집 : 스크립트를 호출 할 때 나는 유일한 스크립트입니다. 하나의 파일에 자물쇠를 묻는 사람 – giozh