En el Capítulo anterior: "" les enseñaba a trackear las visitas con unas líneas en PHP, ahora en esta entrega les voy a enseñar como purgar esos logs cuando alcancen una capacidad de 1Mb y al mismo tiempo enviarnos una copia del backup en formato de
compresión gz
a nuestro email valiéndonos de la líbreria
PHPMailer
la cual se readapto para que funcione con PHP 5 o superior.
Para cumplir con este objetivo el script anterior se modificó agregándole unas cuantas líneas adicionales, no por ello es significativamente mas extenso.
Veamos:
Vamos a necesitar 3 archivos para trabajar
1) visitas.txt (permisos 755, donde vamos a ir guardando a modo de base de datos los logs osea las visitas a la pagina)
2) class.phpmailer.php (la libreria PHPMailer propiamente dicho, para poder enviarnos el archivo comprimido como adjunto)
3) mylog.php (nuestro script php para trackear las visitas)
Para ser un poco más prolijos vamos a incorporar con un include('mylog.php'); en la página que vamos a trackear
(A pie del post les dejo el script para que puedan bajarlo)
<?php
error_reporting(0);
require_once('class.phpmailer.php');
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function iComprimir($sFichOrigen, $iNivelComp = 8){
$sFichDetino = $sFichOrigen.".gz";
if ( ! $fOrigen = @fopen($sFichOrigen, "rb" ) )
return false;
$sOriBin = fread( $fOrigen, filesize($sFichOrigen) ) ;
fclose($fOrigen);
$sDesGZ = gzencode( $sOriBin, $iNivelComp ) ;
if ( ! $fDestino = @fopen ($sFichDetino, "wb" ) )
return false;
fwrite($fDestino, $sDesGZ ) ;
fclose($fDestino);
return true;
}
// Genero el log
$NombreArchivo='visitas.txt';
date_default_timezone_set('America/Argentina/Buenos_Aires');//seteo para que me de la fecha de mi pais
$fecha = date("d M Y H:i:s" ) ;
$refer = $_SERVER['HTTP_REFERER'];
$consulta = $_SERVER['QUERY_STRING'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$ruri = $_SERVER['REQUEST_URI'];
$fh=fopen($NombreArchivo,"a+" ) ;// a+ hago un append para no machacar datos
$ip=getRealIpAddr () ;
fputs($fh,"$fecha|$ip|$refer|$consulta|$browser|$rurin" ) ;
fclose( $fh ) ;
// Compruebo el tamaño del fichero si es mayor o igual a 1Mb lo comprimo,purgo y lo adjunto por email
$fsize=1048576;// 1 mb expresado en bytes
$k=filesize($NombreArchivo ) ;
if($k>=$fsize){
if (iComprimir ($NombreArchivo, 9))
{
$f=fopen($NombreArchivo,"w" ) ;fclose( $f ) ;//purgo el fichero
// envio por email el log comprimido como adjunto usando la clase PHPMailer
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = "<b>Tu log file!.</b>";
$body = preg_replace("[//]",'',$body ) ;
$mail->AddReplyTo("[email protected]","Logs Bck" ) ;
$mail->SetFrom('[email protected]', 'Logs Bck' ) ;
$address = "[email protected]";
$mail->AddAddress($address, "Tu nombre o pagina" ) ;
$mail->Subject = "Log de tu pagina";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML( $body ) ;
$mail->AddAttachment("$NombreArchivo.gz" ) ; // attachment
if(!$mail->Send()) {
//echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//echo "Message sent!";}
$bck = "bck-".date("dMYHis" ) .".txt.gz" ;
rename ("$NombreArchivo.gz",$bck ) ;
}
}
}
?>
Cabe aclarar que en la próxima visita a la página donde este el script cuando el log visitas.txt alcance el tamaño de 1 Mb automáticamente va a comprimirse en gz, "limpiar" visitas.txt y enviar el log comprimido por email dejando una copia con nombre de archivo tipo fechahora por si ocurre algun error siempre quedara la copia en el server que luego la podemos borrar manualmente desde nuestro FTP.
El script esta autoexplicado, pueden mejorarlo como les guste
y bajarlo completo desde este link
Sitio con el articulo y descarga
Si tienen dificultades para bajarlo envienme MP y les envio el rar con el script
pd. sepan disculpar si cometi algunos errores en la redacción del post, cualquier cosa haganmelo saber
saludos a todos y gracias por leer!!!
Artículo anterior donde explico como trackear visitas facilmente
Para cumplir con este objetivo el script anterior se modificó agregándole unas cuantas líneas adicionales, no por ello es significativamente mas extenso.
Veamos:
Vamos a necesitar 3 archivos para trabajar
1) visitas.txt (permisos 755, donde vamos a ir guardando a modo de base de datos los logs osea las visitas a la pagina)
2) class.phpmailer.php (la libreria PHPMailer propiamente dicho, para poder enviarnos el archivo comprimido como adjunto)
3) mylog.php (nuestro script php para trackear las visitas)
Para ser un poco más prolijos vamos a incorporar con un include('mylog.php'); en la página que vamos a trackear
(A pie del post les dejo el script para que puedan bajarlo)
<?php
error_reporting(0);
require_once('class.phpmailer.php');
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function iComprimir($sFichOrigen, $iNivelComp = 8){
$sFichDetino = $sFichOrigen.".gz";
if ( ! $fOrigen = @fopen($sFichOrigen, "rb" ) )
return false;
$sOriBin = fread( $fOrigen, filesize($sFichOrigen) ) ;
fclose($fOrigen);
$sDesGZ = gzencode( $sOriBin, $iNivelComp ) ;
if ( ! $fDestino = @fopen ($sFichDetino, "wb" ) )
return false;
fwrite($fDestino, $sDesGZ ) ;
fclose($fDestino);
return true;
}
// Genero el log
$NombreArchivo='visitas.txt';
date_default_timezone_set('America/Argentina/Buenos_Aires');//seteo para que me de la fecha de mi pais
$fecha = date("d M Y H:i:s" ) ;
$refer = $_SERVER['HTTP_REFERER'];
$consulta = $_SERVER['QUERY_STRING'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$ruri = $_SERVER['REQUEST_URI'];
$fh=fopen($NombreArchivo,"a+" ) ;// a+ hago un append para no machacar datos
$ip=getRealIpAddr () ;
fputs($fh,"$fecha|$ip|$refer|$consulta|$browser|$rurin" ) ;
fclose( $fh ) ;
// Compruebo el tamaño del fichero si es mayor o igual a 1Mb lo comprimo,purgo y lo adjunto por email
$fsize=1048576;// 1 mb expresado en bytes
$k=filesize($NombreArchivo ) ;
if($k>=$fsize){
if (iComprimir ($NombreArchivo, 9))
{
$f=fopen($NombreArchivo,"w" ) ;fclose( $f ) ;//purgo el fichero
// envio por email el log comprimido como adjunto usando la clase PHPMailer
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = "<b>Tu log file!.</b>";
$body = preg_replace("[//]",'',$body ) ;
$mail->AddReplyTo("[email protected]","Logs Bck" ) ;
$mail->SetFrom('[email protected]', 'Logs Bck' ) ;
$address = "[email protected]";
$mail->AddAddress($address, "Tu nombre o pagina" ) ;
$mail->Subject = "Log de tu pagina";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML( $body ) ;
$mail->AddAttachment("$NombreArchivo.gz" ) ; // attachment
if(!$mail->Send()) {
//echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//echo "Message sent!";}
$bck = "bck-".date("dMYHis" ) .".txt.gz" ;
rename ("$NombreArchivo.gz",$bck ) ;
}
}
}
?>
Cabe aclarar que en la próxima visita a la página donde este el script cuando el log visitas.txt alcance el tamaño de 1 Mb automáticamente va a comprimirse en gz, "limpiar" visitas.txt y enviar el log comprimido por email dejando una copia con nombre de archivo tipo fechahora por si ocurre algun error siempre quedara la copia en el server que luego la podemos borrar manualmente desde nuestro FTP.
El script esta autoexplicado, pueden mejorarlo como les guste
y bajarlo completo desde este link
Sitio con el articulo y descarga
Si tienen dificultades para bajarlo envienme MP y les envio el rar con el script
pd. sepan disculpar si cometi algunos errores en la redacción del post, cualquier cosa haganmelo saber
saludos a todos y gracias por leer!!!
Artículo anterior donde explico como trackear visitas facilmente

