Вход в веб-приложение PHP

Я хочу вести журналы некоторых вещей, которые люди делают в моем приложении, в некоторых случаях, чтобы их можно было отменить в случае необходимости.

Лучше всего хранить такие журналы в файле или в базе данных? Я совершенно не понимаю, каковы плюсы и минусы, за исключением того, что это еще одна таблица для настройки.

Есть ли третий (или четвертый и т. д.) Вариант, о котором я не знаю, и мне следует изучить его?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
1 295
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Я бы использовал базу данных просто для удобства обслуживания - также несколько изменений в файле могут привести к тому, что некоторые из них будут пропущены.

Ответ принят как подходящий

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

Скорее всего, вы захотите записать в файл только в том случае, если проблема связана с очень высокой производительностью или если у вас очень неструктурированные или большие объемы данных на запись, которые может быть нежелательно хранить в базе данных. Обратите внимание: если ваше приложение не имеет очень большого количества транзакций, скорость базы данных вряд ли будет проблемой. Также обратите внимание, что если вы работаете с файлом, вам необходимо очень осторожно обрабатывать одновременный доступ (чтение / запись / блокировка), что, вероятно, не является чем-то, с чем вы хотите иметь дело.

Я поддержу оба приведенных выше предложения и добавлю, что блокировка файлов в журнале плоских файлов может вызвать проблемы при большом количестве пользователей.

Есть по крайней мере одна определенная причина для сохранения в базе данных. Вы можете использовать INSERT DELAYED в MySQL (или аналогичные конструкции в других базах данных), который немедленно возвращается. Вы не получите никаких возвращаемых данных из базы данных с такими запросами, и их применение не гарантируется.

Используя INSERT DELAYED, вы не сильно замедляете работу своего приложения из-за ведения журнала. База данных может свободно записывать INSERT на диск в любое время, поэтому она может связывать несколько вставок вместе.

Вам нужно остерегаться использования встроенной в MySQL функции отметки времени (например, CURRENT_TIMESTAMP или CUR_DATE ()), потому что они будут вызываться всякий раз, когда запрос фактически выполняется. Поэтому вы должны убедиться, что каждый раз данные генерируются на вашем языке программирования, а не в базе данных. (Этот абзац может быть специфичным для MySQL)

Для меня это в новинку. Очень красиво.

Mark Biek 15.10.2008 17:32

не гарантировано? это звучит как не такая уж хорошая идея. не могли бы вы это объяснить?

Ape-inago 06.03.2011 08:48

Я большой поклонник log4php. Это дает вам стандартный интерфейс для регистрации действий. Он основан на log4j. Библиотека загружает центральный файл конфигурации, поэтому вам никогда не придется изменять код, чтобы изменить ведение журнала. Он также предлагает несколько целей журналов, таких как файлы, системный журнал, базы данных и т. д.

Другие вопросы по теме