Este mensaje de error puede presentarse cuando un los requerimientos de memoria de un script PHP exceden el limite por defecto establecido.
Para resolverlo, hay dos opciones:
Cambiar el limite de memoria de un script específico incluyendo la siguiente linea:
ini_set("memory_limit","12M");
Para el ejemplo anterior el limite se establece en 12 Megabytes.
Este cambio tambien se puede hacer de manera global (aplica para todos los scripts). Para ello es necesario modificar el archivo php.ini (normalmente ubicado en la ruta /etc)
memory_limit = 12M
Tenga cuidado de utilizar este comando pues es poco frecuente que un script requiera estos niveles de memoria para su ejecución. Excepciones frecuentes para esto son operaciones como importar y procesar archivos batch de gran tamaño.
ShareThis
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
martes, 22 de junio de 2010
Leer CSV con PHP
Comparto este fragmento de código muy sencillo, útil para procesar archivos CSV con el lenguaje PHP:
$archivo = fopen("archivo.csv");
while($linea = fgetcsv($archivo,0,",")){
$columna1 = $linea[0];
$columna2 = $linea[1];
$columna3 = $linea[2];
$columna4 = $linea[3];
}
fclose($archivo);
$archivo = fopen("archivo.csv");
while($linea = fgetcsv($archivo,0,",")){
$columna1 = $linea[0];
$columna2 = $linea[1];
$columna3 = $linea[2];
$columna4 = $linea[3];
}
fclose($archivo);
Etiquetas:
codigo abierto,
open source,
PHP,
trucos
martes, 21 de julio de 2009
Codigo PHP genera página en blanco
Recientemente estuve adelantando un desarrollo en PHP. Con gran sorpresa me encontre con que al pasar el código al ambiente de producción, algunas porciones de la aplicación dependientes de una conexión a base de datos MySQL no funcionaban apropiadamente.
Lo primero que intente fue habilitar las opciones de debug:
Sin embargo, la salida no evidenciaba ningun mensaje de error fatal.
De manera seguida, intente extraer la información de configuración del hosting mediante el siguiente codigo PHP:
Alli se indicaba que se trataba de una versión PHP 5.2.
Finalmente, despues de dos dias indagando en Internet, encontre que el error se debia a un bug de PHP al usar fetch_assoc()
Hay dos workarounds para este problema:
Primera alternativa
Utilice fetch_row en lugar de fetch_assoc.
Segunda alternativa
Utilice el siguiente código de workaround.
Este problema al parecer estaba presente en 2002 de acuerdo a un reporte en bugs.php.net.
Espero que sea de utilidad.
Lo primero que intente fue habilitar las opciones de debug:
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors',1);
ini_set('display_errors', 'On');
...el resto de código...
Sin embargo, la salida no evidenciaba ningun mensaje de error fatal.
De manera seguida, intente extraer la información de configuración del hosting mediante el siguiente codigo PHP:
php phpinfo();
Alli se indicaba que se trataba de una versión PHP 5.2.
Finalmente, despues de dos dias indagando en Internet, encontre que el error se debia a un bug de PHP al usar fetch_assoc()
Hay dos workarounds para este problema:
Primera alternativa
Utilice fetch_row en lugar de fetch_assoc.
"//$row=$result->fetch_assoc();" the code is not working...
"$row=$result->fetch_row();" the code is working...
Segunda alternativa
Utilice el siguiente código de workaround.
$finfo = $result->fetch_fields(); $nc=0; foreach ($finfo as $val)
{$row_key[$nc++]=$val->name;} //---
for ($i=0; $i<$num_results; $i++) {
//$row=$result->fetch_assoc();
$row_val=$result->fetch_row();$row=array_combine($row_key,$row_val);
echo "".($i+1)." Title: ";
echo htmlspecialchars(stripslashes($row['title']));
echo "
Author: ";
echo stripslashes($row['author']);
}
Este problema al parecer estaba presente en 2002 de acuerdo a un reporte en bugs.php.net.
Espero que sea de utilidad.
Etiquetas:
Bug,
error,
fetch_assoc(),
MySQL,
PHP
Suscribirse a:
Entradas (Atom)