Sistema de registros (logs) - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (
https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Sistema de registros (logs) (
/showthread.php?tid=551687)
Sistema de registros (logs) -
Nicolas_Castillo - 20.12.2014
Ñ—Cual es la mejor forma de mantener un registro del servidor? (Suponiendo que por cada comando ingresado haya un registro por jugador)
Yo uso una tabla MySQL [MyISAM] para guardar los registros. Ñ—Es bueno? Ñ—Que otras mejores formas hay?
Respuesta: Sistema de registros (logs) -
Zume - 20.12.2014
Pues la verdad es que ambas maneras son buenas, yo optarнa por quedarme con la de MySQL.
InnoDB tiene mayor capacidad para ejecutar instrucciones ACID y tiene mayor integridad referencial.
MyISAM tiene mayor capacidad para ejecutar consultas con rapidez
El que te convenga mбs.
Aъn asн, te dejo una funciуn que serнa basicamente por .txt.
pawn Код:
stock Log_Write(const path[], const str[], {Float,_}:...)
{
  static
    args,
    start,
    end,
    File:file,
    string[1024]
  ;
  if ((start = strfind(path, "/")) != -1) {
    strmid(string, path, 0, start + 1);
    if (!fexist(string))
      return printf("** Advertencia: El directorio \"%s\" no existe.", string);
  }
  #emit LOAD.S.pri 8
  #emit STOR.pri args
  file = fopen(path, io_append);
  if (!file)
    return 0;
  if (args > 8)
  {
    #emit ADDR.pri str
    #emit STOR.pri start
    for (end = start + (args - 8); end > start; end -= 4)
    {
      #emit LREF.pri end
      #emit PUSH.pri
    }
    #emit PUSH.S str
    #emit PUSH.C 1024
    #emit PUSH.C string
    #emit PUSH.C args
    #emit SYSREQ.C format
    fwrite(file, string);
    fwrite(file, "\r\n");
    fclose(file);
    #emit LCTRL 5
    #emit SCTRL 4
    #emit RETN
  }
  fwrite(file, str);
  fwrite(file, "\r\n");
  fclose(file);
  return 1;
}
pawn Код:
public OnPlayerConnect(playerid)
{
  new
    nombre[MAX_PLAYER_NAME], IP[32];
   Â
  GetPlayerName(playerid, nombre, sizeof(nombre));
  GetPlayerIP(playerid, IP, sizeof(IP));
 Â
  Log_Write("conexiones.txt", "[%s] %s se conectу", IP, nombre);
  return 1;
}