URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6842
[ Назад ]

Исходное сообщение
"Лок качаемых файлов средствами апача."

Отправлено Андрей , 07-Май-10 15:08 
На сервере лежит файл большого размера. Экспортные данные в csv. Он периодически меняется по крону. То есть периодически перегенерируется из php-скрипта. Его раз в сутки скачивает удалённый сервер. Можно ли как-то в Апаче поставить лок на запись на файл, когда его кто-то качает? То есть удалённый сервер запросил файл и качает его по байтам и чтобы он залочился апачем, чтобы я из своего скрипта не мог перезаписать этот файл, пока его полностью не докачает удалнный сервер (то есть чтоб мой скрипт стал в очередь).
Из php я могу залочить файл flock() - функцией. А может ли апач залочить файл ?

Содержание

Сообщения в этом обсуждении
"Лок качаемых файлов средствами апача."
Отправлено KarD_IO , 07-Май-10 17:09 
>А может ли >апач залочить файл ?

Вряд-ли. Он же только читает файлы.


"Лок качаемых файлов средствами апача."
Отправлено JohnProfic , 07-Май-10 19:53 
>в сутки скачивает удалённый сервер. Можно ли как-то в Апаче поставить
>лок на запись на файл, когда его кто-то качает? То есть
>удалённый сервер запросил файл и качает его по байтам и чтобы
>он залочился апачем, чтобы я из своего скрипта не мог перезаписать
>этот файл, пока его полностью не докачает удалнный сервер (то есть
>чтоб мой скрипт стал в очередь).

Если:
1) ОС с апачем любая вменяемая unix-like
2) файл качается только целиком, т.е. докачка не используется
3) на диске имеется остаточно места для хранения двух файла
то можно писать в файл с другим именем, после чего делать rename(new, old) или unlink(old) и rename(new, old).
Если файл был открыт апачем, он его плагополучно прочитает до конца (даже после удаления). Когда апач закроет файл, система освободит место им занимаемое.