Как оптимизировать процесс нескольких процессов, пытаясь записать в один файл журнала

Веб-сайт, использующий PHP, имеет очень большой трафик, скажем, 5000 запросов в секунду. Каждый из этих запросов пытается регистрировать данные, но в один файл. Поскольку в любой момент времени только один запрос может записать в файл, другой запрос ставится в очередь, что влияет на общее время ответа. Данные должны быть зарегистрированы, это важно. Как я могу подойти, чтобы оптимизировать этот сценарий.

2

Решение

Я вижу два варианта.

  1. Поскольку ваше требование заключается в записи в один большой файл журнала, а не куда-либо еще. Вы можете иметь свои PHP-скрипты, чтобы сначала занести эти записи в очередь. Существует множество платформ для организации очередей сообщений, таких как RabbitMQ или ActiveMQ. Предполагая, что эти записи журнала не являются большими полезными нагрузками, Ваши пользовательские запросы, которые приводят к записи в журнал, могут быть направлены на вставку сообщения в очередь. У вас будет другой бэкэнд-процесс (может быть php-скрипт?), Который будет просто слушать очередь и постоянно записывать в файл журнала. Вот подробное объяснение того, как клиент будет использовать сообщение очереди (https://www.rabbitmq.com/tutorials/tutorial-one-php.html)

  2. Вы также можете использовать что-то вроде Apache Log4php которая представляет собой каркас ведения журнала, который использует механизм добавления файлов. Вы сможете легко передать важную для вас информацию, просто вызвав метод.

    $ logger-> info («Это сообщение для регистрации.»);

Они должны обрабатывать сложность входа нескольких запросов в один и тот же файл. Вы даже можете сделать так, чтобы они разбивали файлы по дням и т. Д.

Надеюсь это поможет!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]