powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
2 сообщений из 2, страница 1 из 1
PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
    #40046494
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Пользуюсь PHP 5.7 - 7.2.
Под rhel 7.2 - 7.4

Может кто-то рассказать как работает блокировка файла при одновременной записи?

Кейс: два, десять, сто юзеров лезут на сайт и приложение пишет лог файл - всё в один с LOCK_EX .

Суть вопроса : Как именно работает блокировка:

1. Какой то из тредов отвалится, потому что встретит блокировку?
2. Все ли 100 тредов в итоге получат доступ к файлу?
3. Если все - то как организуется доступ - это очередь или есть шанс что какойто тред зависнет и никогда не получит доступ?

PS: подскажите так же материалы, где про это почитать. Спасибо.
...
Рейтинг: 0 / 0
PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
    #40046857
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитать - официальное руководство.
https://www.php.net/manual/ru/function.file-put-contents.php
https://www.php.net/manual/ru/function.flock.php

Хотите более тонкое управление блокировкой и ходом выполнения скрипта - используйте flock(), там есть вариант с ожиданием снятия блокировки и вариант без ожидания.

Сама по себе блокировка не влияет на "отвал", который, скорее, может произойти на уровне вебсервера по таймауту ожидания ответа от скрипта, пока разгребается очередь. Или можно получить отказ вебсервера в приеме нового подключения, т.к. лимиты выбраны, а скрипты в большом количестве висят на ожидании снятия блокировки.

PS: по мне так было бы более правильным, чтоб не создавать лишнюю конкуренцию на уровне ФС, писать оперативно данные не прямо в файл, а в БД (таблица MEMORY) или в мемкеш, чтобы потом сбросить большую пачку записей в файл за раз.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]