protected function ciclar_archivos_logs($path, $archivo) { if (apex_log_archivo_backup_cant == 0) { //Si es un unico archivo hay que borrarlo unlink($path . "/" . $archivo); return; } //Encuentra los archivos $patron = "/{$archivo}\\.([0-9]+)/"; $archivos = toba_manejador_archivos::get_archivos_directorio($path); sort($archivos); //¿Cual es el numero de cada uno? $ultimo = 0; $arch_ordenados = array(); foreach ($archivos as $arch_actual) { $version = array(); preg_match($patron, $arch_actual, $version); if (!empty($version) && count($version) > 1) { $pos = $version[1]; $arch_ordenados[$pos] = $arch_actual; if ($pos > $ultimo) { $ultimo = $pos; } } } //Se determina el siguiente numero $sig = $ultimo + 1; //¿Hay que purgar algunos? $puede_purgar = apex_log_archivo_backup_cant != -1; $debe_purgar = count($arch_ordenados) >= apex_log_archivo_backup_cant - 1; if ($puede_purgar && $debe_purgar) { ksort($arch_ordenados); reset($arch_ordenados); //Se dejan solo N-1 archivos $a_purgar = count($arch_ordenados) - (apex_log_archivo_backup_cant - 1); while ($a_purgar > 0) { unlink(current($arch_ordenados)); $a_purgar--; next($arch_ordenados); } } //Se procede a mover el archivo actual $path_completo = $path . "/" . $archivo; if (apex_log_archivo_backup_compr) { //Se comprime $nuevo = $path_completo . ".{$sig}.gz"; toba_manejador_archivos::comprimir_archivo($path_completo, 5, $nuevo); unlink($path_completo); } else { $nuevo = $path_completo . ".{$sig}"; rename($path_completo, $nuevo); } }