@tictac17

Почему файловые блокировки между Apache и Samba не работают?

Решил на днях настроить доступ к 1С Бухгалтерии через Samba для тех, кто работает в офисе и через Apache для удаленных сотрудников. Дистрибутив выбрал Debian 9.8. То есть получается, база в файловом режиме и режиме веб-клиента одновременно. И вот что мне пришло в голову проверить. Написал программку, которая ставит эксклюзивную блокировку на файл базы 1С в расшаренной папке на Debian. Запускал с винды. Проверил с другой винды - ругается, не может открыть залоченный файл, а Apache на Debian, который обращается к файлу базы напрямую, спокойно открывает и пускает в базу. То есть блокировку он не видит совсем. Не видит ее и любой другой процесс Linux. Что это обычно означает для файловой базы? Конечно же, крах спустя время, ведь веб-клиент и толстый будут лезть в базу несогласованно. Внимание вопрос: что делать, как заставить процессы Linux (POSIX) видеть блокировки, накладываемые Samba? Тестировал на конфиге smbd.conf по умолчанию за исключением oplocks - их сразу выключил. Впрочем, они дела не меняют. Все перепробованные параметры также не принесли результатов. Пожалуйста, подключение через тонкий клиент к тому же апачу не предлагать.
  • Вопрос задан
  • 1033 просмотра
Решения вопроса 1
Jump
@Jump
Системный администратор со стажем.
Вы похоже путаете понятие блокировки.
Есть файловая блокировка - на уровне системы блокируется доступ к файлу.
Есть блокировка 1с - при подключении клиента в папке базы создается файл блокировки. И остальные клиенты согласуют запись в базу.
Банальная внутрення блокировка, не имеющая никакого отношения к блокировке файла. Файл остается незаблокированным, и вы разумеется можете попортить его сторонним приложением запущенным на линуксе.
А вот веб клиент, как и другой штатный клиент будут корректно работать.
В общем не лезьте на линуксе сторонними приложениями к файлу базы и все будет хорошо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
Какая база данных у вас собирается работать со своими файлами по http O_o? настоятельно рекомендую хорошенько подумать и так не делать, ибо вы создадите головную боль пользователям.

https://www.oreilly.com/openbook/samba/book/ch05_0...
If you have a system that understands oplocks, set kernel oplocks = yes in the Samba configuration file. That should eliminate conflicts between Unix processes and Windows users.
Ответ написан
@Dementor
программист, архитектор, аналитик
Странно ожидать, что виндузная блокировка будет работать под Линуксом. Хотите только чтение - ставьте соответствующие права доступа.

Что это обычно означает для файловой базы? Конечно же, крах спустя время, ведь веб-клиент и толстый будут лезть в базу несогласованно.
Это бред. По вашей логике, то что в современных СУБД работают тысячи пользователей одновременно - это миф, так как многопользовательский доступ разрушает любую базу.

Толстые клиенте, тонкие клиенты или веб-клиенты через вебсервер, которые обращается к базе с помощью библиотеки wsap22.so - все они с точки зрения файла 1Cv8.1CD одинаково читают и пишут данные. Если у вас 2 пользователя одновременно работают с базой через толстый клиент и это ее не уничтожает, то при заходе человека через веб-клиент (или тонкий клиент, но через веб-адрес) ситуация не изменится.

Я публиковал в вебе файловую базу еще во времена тестовой 8.2.6 (клиент хотел рискнуть, так как для бетта-тестеров это было бесплатно) - и никаких проблем не было.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы