PHP одновременные записи файла

CultureInfo.CurrentCulture.TextInfo.ToTitleCase("hello world");
20
задан Amandeep Grewal 30 July 2009 в 22:12
поделиться

3 ответа

Обычный способ решения этой проблемы состоит в том, чтобы оба сценария использовали flock () для блокировки:

$f = fopen('some_file', 'a');
flock($f, LOCK_EX);
fwrite($f, "some_line\n");
flock($f, LOCK_UN);
fclose($f);

Это заставит сценарии ждать выполнения друг друга с файлом перед записью в него. Если хотите, «менее важный» сценарий может делать:

$f = fopen('some_file', 'a');
if(flock($f, LOCK_EX | LOCK_NB)) {
    fwrite($f, "some_line\n");
    flock($f, LOCK_UN);
}
fclose($f);

, так что он просто ничего не будет делать, если обнаружит, что что-то занято с файлом.

32
ответ дан 29 November 2019 в 23:20
поделиться

Посмотрите на функцию flock .

1
ответ дан 29 November 2019 в 23:20
поделиться

К вашему сведению: flock работает только на * nix и недоступен в Windows

-4
ответ дан 29 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: