Веб-сайт, использующий PHP, имеет очень большой трафик, скажем, 5000 запросов в секунду. Каждый из этих запросов пытается регистрировать данные, но в один файл. Поскольку в любой момент времени только один запрос может записать в файл, другой запрос ставится в очередь, что влияет на общее время ответа. Данные должны быть зарегистрированы, это важно. Как я могу подойти, чтобы оптимизировать этот сценарий.
Я вижу два варианта.
Поскольку ваше требование заключается в записи в один большой файл журнала, а не куда-либо еще. Вы можете иметь свои PHP-скрипты, чтобы сначала занести эти записи в очередь. Существует множество платформ для организации очередей сообщений, таких как RabbitMQ или ActiveMQ. Предполагая, что эти записи журнала не являются большими полезными нагрузками, Ваши пользовательские запросы, которые приводят к записи в журнал, могут быть направлены на вставку сообщения в очередь. У вас будет другой бэкэнд-процесс (может быть php-скрипт?), Который будет просто слушать очередь и постоянно записывать в файл журнала. Вот подробное объяснение того, как клиент будет использовать сообщение очереди (https://www.rabbitmq.com/tutorials/tutorial-one-php.html)
Вы также можете использовать что-то вроде Apache Log4php которая представляет собой каркас ведения журнала, который использует механизм добавления файлов. Вы сможете легко передать важную для вас информацию, просто вызвав метод.
$ logger-> info («Это сообщение для регистрации.»);
Они должны обрабатывать сложность входа нескольких запросов в один и тот же файл. Вы даже можете сделать так, чтобы они разбивали файлы по дням и т. Д.
Надеюсь это поможет!
Других решений пока нет …