elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  .
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: .  (Leído 3,602 veces)
Alexmartinez4

Desconectado Desconectado

Mensajes: 7


Ver Perfil
.
« en: 25 Marzo 2018, 12:47 pm »

.


« Última modificación: 31 Marzo 2019, 19:17 pm por kvothe tankian » En línea

animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: Problema con PHP (error de memoria)
« Respuesta #1 en: 25 Marzo 2018, 13:38 pm »

Primero, te comento mi punto de vista. Para hacer lo que deseas deberías de plantearte hacerlo de otro modo, no tiene sentido (aunque la codificacion sea mas fácil de ese modo) el meter todo el archivo en memoria para hacer una busqueda secuencial. Deberias usar funciones que abran el fichero y permita leer linea a linea, como fopen, fscanf y fclose e ir comparando las lecturas que hagas con los emails que buscas. Una vez encontrado, salirte de todos los bucles.
Además tal y como tienes el código solo dejas de leer el archivo en curso y seguirias leyendo los demás archivos, cuando igual lo lógico seria salirte de todos los bucles.

La lectura con fopen y fscanf va tal que asi (mira la api, porque voy de memoria y sin probarlo):

$fd = fopen('nombre','r');
$linea=fscanf($fd,"%[^\n]");
while($linea){

$linea=fscanf($fd,"%[^\n]");

}
fclose($fd);

Si lo haces abriendo el descriptor y leyendo con fscanf puedes utilizar archivos del tamaño que desees.

Por otro lado, la cantidad de memoria no solo dependerá del tamaño del archivo, probablemente dependerá del numero de lineas de este. Mira a ver si cambiando el nombre del archivo numero 16 por el numero 1 te da error en la primera lectura, porque entiendo que igual tiene que ver con la estructura de array que se guarda php con el file y el numero de lineas que tengas en dicho archivo.

Además, no tengo claro si te estaras dejando los desciptores de todos los ficheros abiertos, digo no lo tengo claro porque en principìo deberia de suponer que la funcion file ya que lee todo el archivo y lo mete en memoria deberia cerrar el descriptor. Asi que no tengo claro si deberias o no utilizar un fclose. Miralo, no vaya a ser eso.


En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
Alexmartinez4

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Problema con PHP (error de memoria)
« Respuesta #2 en: 25 Marzo 2018, 15:24 pm »

.
« Última modificación: 31 Marzo 2019, 19:18 pm por kvothe tankian » En línea

Alexmartinez4

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Problema con PHP (error de memoria)
« Respuesta #3 en: 25 Marzo 2018, 19:02 pm »

.
« Última modificación: 31 Marzo 2019, 19:18 pm por kvothe tankian » En línea

animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: Problema con PHP (error de memoria)
« Respuesta #4 en: 26 Marzo 2018, 08:13 am »

Un par de errores y una pregunta,

El primero es error:

con el primer fscanf lees la linea y antes de tratarla lees la siguiente, eso quiere decir que si la password está en la primera linea no la vas a ver.

El segundo no se si es error:

Si encuentras las password en un archivo, dejas de leer en ese archivo, pero sigues leyendo el resto de archivos. ¿Ese es el comportamiento que quieres tener? El break te sale del primer bucle pero no de todos los bucles.

Por último el problema de que se pare:

¿Estas ejecutando el script en local (ejecutando php programa.php) o en un servidor web (desde un navegador)? El "<br>" da a entender que las pruebas las estas haciendo en un servidor web (o bien un hosting remoto o algo tipo wamp o lamp). Si es así, ten en cuenta que los servidores web tienen un tiempo maximo de ejecucion, para evitar que comportamientos erroneos dejen scripts en ejecucion por un tiempo aleatorio. Si te pasas de ese tiempo el script se para. Echa un vistazo a http://php.net/manual/es/function.set-time-limit.php. El tiempo por defecto suele estar en 30 segundos. De ahí podria venir el problema de que se te pare a veces en un archivo y otras veces en otro. Se puede definir tambien una variable en el php.ini que modifica dicho tiempo.

Saludos.
En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error al llenar memoria con el project64
Juegos y Consolas
junkiman 0 4,592 Último mensaje 14 Octubre 2004, 17:22 pm
por junkiman
Error de acceso a memoria (no trabajo con memoria :S)
Programación Visual Basic
SERBice 8 4,923 Último mensaje 21 Junio 2008, 13:56 pm
por Lambda
[Error Win 7 Portatil] Copia Seguridad y Memoria
Windows
Julius 0.4 6 6,134 Último mensaje 4 Julio 2010, 22:41 pm
por Randomize
Error con memoria flash
Dudas Generales
VICTORIOLA 0 3,119 Último mensaje 19 Junio 2011, 22:19 pm
por VICTORIOLA
Error con memoria dinámica en C++
Programación C/C++
Vivisnai 3 2,503 Último mensaje 1 Marzo 2016, 20:20 pm
por Vivisnai
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines