«Лучшая практика» (на мой взгляд) для атомарного создания нового файла — открыть временный файл (используя tmpfile()), а затем переместить файл в его окончательное местоположение.
Однако это не сработает, если временный файл находится в другой точке монтирования, так как это приведет к постепенному созданию файла и, кроме того, к ненужным издержкам ввода-вывода.
Другой вариант — создать временный файл в том же каталоге, что и конечный пункт назначения, но это имеет тот недостаток, что создает необычный файл для пользователя (такие приложения, как MS Word и ViM, делают это, но я также считаю это плохим поведением).
Есть ли метод, аналогичный tmpfile(), который позволит мне указать точку монтирования? Я понимаю, что это, вероятно, не существует встроенного в PHP, поэтому также допустима функция Posix/C или вызов оболочки.