У меня есть следующий код:Почему эта функция возвращает false?
function lock() {
if($lock = @fopen('lock.txt', 'x')) {
fwrite($lock, getmypid());
fclose($lock);
return true;
}
else {
return false;
}
}
$response = lock();
Когда я запускаю код, файл lock.txt создаются и PID, помещаемый в файл. Однако функция возвращает false. Что происходит в мире?
мне нужно
X
для Еорепа, потому что я использую эту функцию для блокировки файлов и управленияЯ взял
@
прочь, и это ошибка, что я получил:
fopen (lock.txt): не удалось открыть поток: Файл существует в/xxx на линии 22.
Проблема в том, что я точно знаю, что файл не существует - я даже вернулся и удалил его, прежде чем запускал код. Код создает файл, но возвращает false.
Я проверил, чтобы другой файл не создавал файл. Я даже ждал 30 секунд, чтобы подождать и посмотреть, появился ли файл - он сам не появляется, он появляется только после выполнения этого кода.
Вызывается ли это как раз один раз? –
Снимите '@', вы получаете сообщение об ошибке? – Barmar
Согласно [docs] (http://php.net/manual/en/function.fopen.php), 'fopen' с режимом' x' возвращает 'false', если файл уже существует. Вы уверены, что вносили в него изменения? Я почему-то сомневаюсь в этом ... –