modulo directorio
Hola a todos... mi problema consiste en que estoy haciendo un módulo que dada una dirección pasada por parámetro a una funcion me devuelve un arreglo con la informacion de los archivos que contiene.
La clase que se encarga de esto la hice con puro PHP y usando recursividad, el problema radica en que cuando activo el modulo en mi sitio, despues al hacer alguna otra cosa en la parte de administracion se me queda en "blanco" el sitio.
Estuve buscando y se dice que esto se debe a que el servidor tenia poca memoria, pero en el archivo de configuracion se lo puse en 256MB, y no creo que un modulo que tenga tan pocas cosas vaya a consumir tantos recursos.
Alguno tiene una idea de como puedo solucionar esto?? Gracias de antemano
/**
* Esta funcion es la que se muestra en la pagina de los servicios
*/
function modulo_service(){
return array(
array(
'#method' => 'getFileList',
'#callback' => 'modulo_show',
'#args' => array(
array(
'#type' => 'string ',
'#name' => 'url ',
'#optional' => true,
'#description' => 'URL relativa del sitio en la cual se encuentran los archivos
que se van a descargar.'
)
),
'#return' => 'xml',
'#help' => 'Retorna un XML con todos los archivos de la URL especificada.'
)
);
}
function modulo_show($url = "./sites/default/files/"){
$urlValida = valid_url($url, $absolute = FALSE);
if($urlValida === true){
require_once 'directory/Directorio.php';
$obj = new Directorio();
/*el segundo parametro indica que se listen los subdirectorios*/
$ficheros = $obj->parseDirectory($url, false);
require_once 'directory/XmlSerializer.class.php';
$xml = new XmlSerializer();
return $xml->serialize($ficheros);
}else{
return "La URL proporcionada no es correcta";
}
- Inicie sesión o regístrese para enviar comentarios

Quizás
- Puede que el problema este en la clase Directorio. Publica al menos el codigo del metodo parseDirectory($url, false);, ten en cuenta que existen funciones ya implementadas en php 5 que hacen esto de forma segura.
- En la documentacion sobre el desarrollo de modulos se recomiendo no cerrar los archivos de los modulos con ?> puede que este sea el probelma que deja tu sitio en blanco, verifica ese detalle.
The closing ?> tag is not necessary and is not used in Drupal code. In fact, it can cause problems if used.
Ya le quite a todas las
Ya le quite a todas las clases que utilizo el cierre de php, pero aún así me sigue dando el mismo problema. En cuanto al codigo que me pediste es el siguiente:
<?php
public function parseDirectory($source_dir, $top_level_only = FALSE, $hidden = FALSE){
if ($fp = @opendir ( $source_dir )){
$source_dir = rtrim ( $source_dir, "/" ) . "/";
$filedata = array ();
while ( FALSE !== ($file = readdir ( $fp )) ){
if (($hidden == FALSE && strncmp ( $file, '.', 1 ) == 0) or ($file == '.' or $file == '..')){
continue;
}
if ($top_level_only == FALSE && @is_dir ( $source_dir . $file )){
$temp_array = array ();
$temp_array = $this->parseDirectory ( $source_dir . $file . "/", $top_level_only, $hidden );
$filedata [$file] = $temp_array;
}else{
$temp ['name'] = $file;
$temp ['url'] = substr($source_dir, 1). $file;
$temp ['size'] = filesize ($source_dir . $file );
$filedata [] = $temp;
}
}
closedir ( $fp );
return $filedata;
}else{
return FALSE;
}
}
?>
Es una funcion recursiva que hice para parsear el directorio pasado por parametro.
Saludos.
Siguiente paso
La función funciona correctamente pero al encontrar un archivo o directorio protegido lanza un error al obtener el tamaño del archivo, cambia filesize() por @filesize().
No olvides quitar el cierre de php a todos los archivos del modulo, no solo a las clases.
Si el problema persiste intenta determinar exactamente que parte del condigo es la responsable. Para esto desactiva el modulo y comentarea las funciones mas complejas hasta eliminar el problema, cuando encuentres la función o bloque de código responsable del problema entre todos seguro lo arreglamos.