Избежать проблемы с перезаписью файлов, которые используются - PullRequest
1 голос
/ 06 апреля 2010

Например, на веб-сервере с высоким трафиком.

Чтобы уменьшить проблемы при переключении файла, я обычно переименовываю старый файл, а затем переименовываю в новый файл.

Некоторое время назад мне сказали, что переименование файла не меняет «данные inode», так что процессы, читающие файл, могут продолжать делать это без сбоев. И, конечно, вместо того, чтобы копировать в новый файл, быстрее и безопаснее переименовать временную копию.

Это все еще лучшая практика, а если нет, то чем вы занимаетесь?

1 Ответ

1 голос
/ 06 апреля 2010

Предполагается, что вы используете Apache http-сервер.

Apache обычно использует функцию ядра sendfile для отправки статических файлов, это означает, что ядро ​​должно кэшировать содержимое файла и отслеживать, когда оно изменяется.

Вы должны создать новый файл и затем заменить старый файл новым файлом, например,

mv newfile oldfile

Тогда содержимое нового файла будет передано вместо старого файла. Обратите внимание, что любые настройки кэша, включенные на уровне HTTP, могут влиять на то, доставляют ли браузеры и прокси старый файл или новый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...