sábado, 23 de julio de 2011

Warning: require(): Unable to allocate memory for pool

Trabajando en unos proyectos con symfony simultáneamente me encontré con este error en algunos pero no en todos ellos:
Warning: require(): Unable to allocate memory for pool

La solución fue sencilla, simplemente limpiar la caché de symfony:

symfony cc

Pero obviamente lo importante es saber porqué ocurrió tal error. Luego de buscar un poco dí con este enlace en el que indican que al parecer se debe a un bug de algunas combinaciones de versiones de APC y PHP (yo tengo APC 3.1.9 y PHP 3.5.6), pero no hay solución definitiva. Será estar pendiente y estar limpiando la caché de vez en cuando.

martes, 19 de julio de 2011

Buscar y reemplazar un texto de forma recursiva

Las maravillosas tuberías (pipes) en linux nos permiten hacer maravillas como estas en la consola. Acá dejo varios casos de buscar y reemplazar:

  • Buscar y Reemplazar un texto recursivamente:

    $ find . -name "*.php" -print | xargs sed -i 's/texto_a_buscar/texto_nuevo/g'

  • Igual que el anterior pero para poder buscar saltos de línea:

Obtener resultado con un solo valor en Doctrine 1.2

Si se construye una consulta que nos entrega un valor y no queremos o no se obtiene un objeto como tal, habrá que cambiar el hidratador de la consulta, ya que por defecto Doctrine creará un objeto de la clase correspondiente a la clase principal en la consulta.

Por ejemplo, si queremos obtener la sumatoria de una columna numérica, no sólo no necesitamos el objeto, sino que la consulta no generará información para crear uno. La consulta y el getter podrían quedar así:

Instalar APC en Fedora 14 y Debian 6

APC es un acelerador de código PHP y cuando tenemos un entorno de producción cualquier ayuda que nos permita ganar unos segundos en tiempo de ejecución es muy valiosa. Su instalación es muy sencilla, pero difiere un poco según la distribución, en mi caso mi máquina de desarrollo tiene Fedora 14 y mi servidor de producción tiene Debian 6.

Instalación en Fedora 14:

lunes, 11 de julio de 2011

Symfony no toma el valor por defecto para un campo booleano

Si todo parece funcionar bien con un campo booleano (el sql de creación de la base de datos es correcto, la inserción y actualización funciona) excepto que los formularios no toman el valor por defecto definido en el archivo schema.yml, es muy probable que el problema se deba a que el valor por defecto esté definido de la siguiente forma:

    campo:
      type: boolean(1)
      notnull: true
      default: 'false'