//===============================================================
// settings iniciales
//===============================================================
$separador = "|@|@|@|";
//===============================================================
$cod_error = 0; // Estado: Ok
// adquirir nombre y ruta del repositorio activo
$fp = fopen("{$path_roller}activo.txt","r");
$almacen01 = fread($fp, filesize("{$path_roller}activo.txt"));
fclose($fp);
$almacen01 = $path_roller . $almacen01;
// apertura del repositorio
$f_activo = @fopen ($almacen01, "rt");
if (!$f_activo) { // IF: No pudo abrir fichero
$cod_error = 1; // Estado: "Repositorio no accesible"
} else { // ELSE: Fichero abierto sin problema
// obtener número de registros en repositorio
$linea = trim(fgets($f_activo));
if (!is_numeric($linea)) { // IF: No hay numero en linea uno
$cod_error = 2; // Estado: "Repositorio fuera de formato"
} else { // ELSE: Numero valido en linea uno
$num_registros = $linea;
// Generar posicion aleatoria
srand((double) microtime() * 1000000);
$aleat_pos = rand(1, $num_registros);
// Localizar registro en posicion deseada
$cnt = 0;
while ((!feof($f_activo))&&($cnt!=$aleat_pos)) {
$linea = trim(fgets($f_activo));
if ($linea == $separador) {
$cnt++;
}
}
if ($cnt != $aleat_pos) {
if ($cnt != $num_registros) {
$cod_error = 3; // Estado: "Numero de registros no coicide"
}
} else {
// Registro localizado
$linea = "";
echo "\n";
while ((!feof($f_activo))&&($linea!=$separador)) {
$linea = trim(fgets($f_activo));
if ($linea!=$separador) {
// Volcar registro en salida standard
echo "{$linea}\n";
}
}
}
fclose ($f_activo);
} // ENDIF: No hay numero en linea uno
} // ENDIF: No pudo abrir fichero
// Informe de errores
if ($cod_error != 0) {
switch ($cod_error) {
case 1 :
$msg_error = "Error: Repositorio no accesible";
break;
case 2 :
$msg_error = "Error: Repositorio fuera de formato";
break;
case 3 :
$msg_error = "Error: Numero de registros no coincide en {$almacen01}";
break;
}
echo $msg_error;
}
?>