На сервере лежит файл большого размера. Экспортные данные в csv. Он периодически меняется по крону. То есть периодически перегенерируется из php-скрипта. Его раз в сутки скачивает удалённый сервер. Можно ли как-то в Апаче поставить лок на запись на файл, когда его кто-то качает? То есть удалённый сервер запросил файл и качает его по байтам и чтобы он залочился апачем, чтобы я из своего скрипта не мог перезаписать этот файл, пока его полностью не докачает удалнный сервер (то есть чтоб мой скрипт стал в очередь).
Из php я могу залочить файл flock() - функцией. А может ли апач залочить файл ?
>А может ли >апач залочить файл ?Вряд-ли. Он же только читает файлы.
>в сутки скачивает удалённый сервер. Можно ли как-то в Апаче поставить
>лок на запись на файл, когда его кто-то качает? То есть
>удалённый сервер запросил файл и качает его по байтам и чтобы
>он залочился апачем, чтобы я из своего скрипта не мог перезаписать
>этот файл, пока его полностью не докачает удалнный сервер (то есть
>чтоб мой скрипт стал в очередь).Если:
1) ОС с апачем любая вменяемая unix-like
2) файл качается только целиком, т.е. докачка не используется
3) на диске имеется остаточно места для хранения двух файла
то можно писать в файл с другим именем, после чего делать rename(new, old) или unlink(old) и rename(new, old).
Если файл был открыт апачем, он его плагополучно прочитает до конца (даже после удаления). Когда апач закроет файл, система освободит место им занимаемое.