|
PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
|
|||
---|---|---|---|
#18+
Привет. Пользуюсь PHP 5.7 - 7.2. Под rhel 7.2 - 7.4 Может кто-то рассказать как работает блокировка файла при одновременной записи? Кейс: два, десять, сто юзеров лезут на сайт и приложение пишет лог файл - всё в один с LOCK_EX . Суть вопроса : Как именно работает блокировка: 1. Какой то из тредов отвалится, потому что встретит блокировку? 2. Все ли 100 тредов в итоге получат доступ к файлу? 3. Если все - то как организуется доступ - это очередь или есть шанс что какойто тред зависнет и никогда не получит доступ? PS: подскажите так же материалы, где про это почитать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 02:43 |
|
PHP: file_put_contens вместе с LOCK_EX - как работает блокировка фалов?
|
|||
---|---|---|---|
#18+
Почитать - официальное руководство. https://www.php.net/manual/ru/function.file-put-contents.php https://www.php.net/manual/ru/function.flock.php Хотите более тонкое управление блокировкой и ходом выполнения скрипта - используйте flock(), там есть вариант с ожиданием снятия блокировки и вариант без ожидания. Сама по себе блокировка не влияет на "отвал", который, скорее, может произойти на уровне вебсервера по таймауту ожидания ответа от скрипта, пока разгребается очередь. Или можно получить отказ вебсервера в приеме нового подключения, т.к. лимиты выбраны, а скрипты в большом количестве висят на ожидании снятия блокировки. PS: по мне так было бы более правильным, чтоб не создавать лишнюю конкуренцию на уровне ФС, писать оперативно данные не прямо в файл, а в БД (таблица MEMORY) или в мемкеш, чтобы потом сбросить большую пачку записей в файл за раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 19:37 |
|
|
start [/forum/topic.php?fid=23&fpage=5&tid=1459513]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 281ms |
total: | 404ms |
0 / 0 |