2012-07-16 9 views
8

Voy a implementar el registro de actividad de los usuarios para mi aplicación web (php + js + mysql).¿Cuál es la mejor práctica para registrar la actividad de los usuarios?

previousely, he utilizado este appoach:

  • en usuarios de sesión Crear una tabla temporal en la base de datos para almacenar los usuarios Identificación del
  • crear disparadores para todas las tablas que insertar una fila en la tabla usando activity usuarios Identificación de esa tabla temporal

Ahora realmente no quiero poner tanta lógica en la base de datos, así que mi pregunta es: ¿cuál es la mejor práctica? ¿Debería quedarme con el método descrito, o debería usar algo (¿qué?) Otro?

edición

que he visto this pregunta, pero yo soy intrested en comparación con el método descrito una en las respuestas.

Edit2

¿Por qué necesito los registros: Necesito saber qué usuario tiene la culpa si algo va mal =)

loggs tienen que contener los datos modificados y nuevos datos para ver qué ha cambiado en realidad .

no habrá muchos usuarios porque es una aplicación corporativa y nuestra empresa no es tan grande.

La pregunta principal es: ¿dónde pongo las lógicas de registro: base de datos o aplicación (backend php)?

+0

Hay tantas cosas que debe responder antes de poder buscar las "mejores prácticas". ¿Por qué quiere registros, qué tienen que contener esos registros, cuántos usuarios espera registrar por segundo, cómo piensa utilizar esos registros, etc., ya que determina qué configuración de sistema planea implementar, etc. Para la mayoría de los usos , Realmente no veo nada de malo en una tabla simple que se escribe cada vez que el usuario hace algo. –

+0

@ N.B. hizo una edición para responder algunas de sus preguntas, por favor, eche un vistazo – k102

Respuesta

7

Como siempre, "depende".

Si la evolución en el tiempo de sus conceptos básicos de negocio es importante, debe ser un concepto de primera clase en el diseño de su base de datos, así como su lógica de PHP. Fowler escribe sobre esto en "Analysis patterns". Esto le permite capturar quién realizó los cambios en sus objetos comerciales y responder preguntas como "¿quién cambió el proyecto de tipo x a y en la fecha z?", "¿Con qué frecuencia el usuario x cambió el producto y?" etc. Hace que el modelo de dominio sea más complejo.

Si no necesita este nivel de integración, mi preferencia es poner la funcionalidad de registro en PHP; los desencadenadores tienen una forma horrible de ralentizar una base de datos, provocar efectos secundarios inesperados o ser olvidados por los desarrolladores que realizan cambios en el esquema.Entonces, en PHP, incluiría declaraciones explícitas de "log this", posiblemente usando un framework orientado a aspectos (aunque nunca he usado eso en PHP, solo en Java).

6

Para el registro, que desea tener una tabla logs, donde se conecte el id de sesión $_SESSION['id'] (suponiendo que tiene sesiones?) Y la actividad del usuario. A continuación, se inserta mediante una consulta MySQL retardada (debido a que los registros no son de alta prioridad):

INSERT DELAYED INTO table (session_id, activity) VALUES ('1234', 'blah'); 

Consulte this link para más información sobre inserciones retrasado.

En otras palabras, ponga toda la lógica en el lado de PHP, solo tenga una tabla de MySQL en la que registre cualquier actividad utilizando el retraso. Esta sería una función log_activity ($ session_id, $ activity) a la que puede llamar desde cualquier lugar donde exista una actividad en la que se pueda iniciar sesión.

+0

hm ... gracias por 'demorado', pero eso no es realmente lo que he pedido. por favor vea mi edición – k102

+0

Sí, eso es realmente lo que ha pedido y eso es realmente lo que necesita. – Doa

+0

'poner toda la lógica en el lado de PHP' ¿por qué? me refiero a por qué es mejor que db logic? – k102

Cuestiones relacionadas