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

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

5 голосов
/ 30 августа 2008

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

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

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

Ответы [ 7 ]

9 голосов
/ 30 августа 2008

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

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

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

5 голосов
/ 30 августа 2008

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

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

3 голосов
/ 03 сентября 2008

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

1 голос
/ 30 августа 2008

Я нашел эту статью: http://www.devshed.com/c/a/PHP/Logging-With-PHP/

1 голос
/ 30 августа 2008

Взгляните на мою более раннюю ветку Хорошая стратегия для того, чтобы оставить контрольный журнал / историю изменений для приложений БД? похоже, что он затрагивает ту же тему.

1 голос
/ 30 августа 2008

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

1 голос
/ 30 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...