Обычный способ решения этой проблемы состоит в том, чтобы оба сценария использовали 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);
, чтобы он ничего не делал, если обнаружил, что файл занят.