Está en: »

Etiquetas : php

Diferentes versiones de PHP según VirtualHost o directorio

Con los cambios de las versiones de PHP 5.3 y 5.4 puede resultar interesante mantener ciertas partes en una versión de PHP anterior y seguir otras con la última estable. Vamos a ver como instalar varios PHP en un mismo Apache.

La instalación del PHP, en este caso 5.2 deberá ser en modo CGI, simplemente deberemos preocuparnos de instalarlo con un prefix diferente y con el fichero de configuración en otro sitio:
Continúe leyendo…

Información sobre los modulos PHP | systemadmin.es

I love PHPMediante la función phpinfo() o la opción -i del php podemos obtener varia información sobre el PHP instalado y sus modulos. Pero también podemos obtener información por de los módulos por separado sin tener que tratar la salida del phpinfo()

En caso que nos interese obtener la información sobre el modulo y sus opciones haríamos:

$ php --ri mysql
 
mysql
 
MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 5.1.51
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /tmp/mysql.sock
MYSQL_INCLUDE => -I/usr/local/mysql//include/mysql
MYSQL_LIBS => -L/usr/local/mysql//lib64/mysql -lmysqlclient 
 
Directive => Local Value => Master Value
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => no value => no value
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off

También nos puede servir para saber si el modulo esta o no instalado:

$ php --ri noexisto
Extension 'noexisto' not present.

Vía: Información sobre los modulos PHP | systemadmin.es.

Establecer una categoría como página principal o excluir algunas en wordpress

Para establecer una categoría como página principal en wordpress, bastará con editar el archivo functions.php de nuestra plantilla y añadir al final (antes del ?>):

function only_category($query)
{
        if ( $query->is_home )
        {
                $query->set('cat', '26');
        }
        return $query;
}
 
add_filter('pre_get_posts', 'only_category');

Donde 26 es el id de la categoría a establecer. Podemos establecer varios separando las ids con espacios. Ej:

$query->set('cat', '26 33 15');

Del mismo modo, si lo que queremos es excluir algunas categorías dejando todas las demás, bastará con poner los ids de las categorías en negativo. Ej:

$query->set('cat', '-26 -33');

Ejecutar scripts en php con un php.ini diferente

Es perfectamente normal tener una parte del código de una aplicación web que se ejecuta por interacción del usuario con el servidor web y otra que lo hace de forma periódica. Estas dos partes se suelen desarrollar en el mismo lenguaje para que compartan las partes comunes de código. Vamos a ver como aplicar restricciones por separado.

Para el código que se ejecuta con el servidor web suele ser útil deshabilitar funciones de PHP que no queremos usar. El problema es que seguramente la parte de la aplicación que ejecutamos periódicamente (con el cron por ejemplo) tendrá unos requerimientos diferentes.

Para poder ejecutar los procesos (mailings, calculos varios…) podemos indicar que se use un php.ini diferente mediante el parámetro -c:

php -c /etc/php.procesos.ini proceso.cualquiera.php

Mediante este comando indicamos a php que ejecute el script proceso.cualquiera.php usando la configuración presente en el fichero /etc/php.procesos.ini. En este fichero podremos ser más permisivos sin afectar a las restricciones del servidor web.

vía Ejecutar scripts en php con un php.ini diferente | systemadmin.es.

Configurar tiempo de caché para un dominio

Para configurar una caché para todo un dominio, podemos usar mod_expires de apache.
Su uso es tan sencillo como insertar en el archivo .htaccess lo siguiente:

<ifmodule mod_expires.c>
        <filesmatch ".(jpg|jpeg|JPG|JPEG|gif|GIF|png|PNG|css|ico|js)$">
                ExpiresActive on
                ExpiresDefault "access plus 10 day"
        </filesmatch>
</ifmodule>

Con esta configuración estamos estableciendo que todos los archivos que terminen en las extensiones especificadas tengan una caché de 10 días.

Muy sencillo y a su vez, muy útil

Servidor LAMP en openSuse

LAMP - Linux Apache Mysql Php

Para sistemas Windows existen aplicaciones todo en uno que te instalan apache, mysql y php de una forma muy fácil y sencilla; para GNU/Linux y mac, tambien existen dichos paquetes, pero para el caso de GNU/Linux, es más sencillo, práctico y útil instalar dichos servicios desde los repositorios de nuestra distribución. En esta ocasión, me centraré en openSuse.

Continúe leyendo…

Depuración y rendimiento de una aplicación en php (y por supuesto codeIgniter)

PHP quick profiler

PHP quick profiler

PHP quick profiler es una librería para php5 que nos permite tener una consola extra donde poder revisar la ejecución de nuestra aplicación.

Es una gran librería que nos revela información variada como datos recibidos, clases iniciadas, el lugar donde las mismas se inician, número de consultas a la sql, consultas a la sql, tiempo de carga, memoria consumida por la aplicación, archivos incluidos y un largo etcétera.

Continúe leyendo…

HMVC – Sistema modular en codeIgniter

codeIgniter

HMVC es un “plugin” que nos permite pogramar módulos bajo el framework codeigniter.

En un principio, la librería nos permite tener para cada módulo los controladores, modelos, vistas y librerías que necesitemos. Es una librería realmente potente ya que incluso nos permite cargar la salida de una función de un controlador en otro controlador.
Continúe leyendo…

retornar una vista en vez de mostrarla – codeIgniter

codeIgniter

Para retornar una vista ya procesada en vez de mostrarla, hay que pasar un valor verdadero como tercer parámetro (true por ejemplo).

$vista = $this-&gt;load-&gt;view('mivista', $array_de_parametros, TRUE);

Compresor de código javascript


Últimamente he estado añadiendo algunas actualizaciones para las cuales he añadido varias librerías javascript. Ya que el tamaño de carga estaba aumentando considerablemente, decidí utilizar algún compresor de código.

Tras bastante rato probando algunos con resultados poco satisfactorio (no funcionaban los códigos resultantes), encontré el proyecto JSMin del señor Douglas Crockford el cual me llamó la atención. Al ver que el proyecto estaba hospedado en code.google.com, me pareció una muy buena opción, pero claro, daba el código del proyecto para varios lenguajes.

Como es normal, me decanté por php (aquí está la variante del proyecto para php).

La cuestión es que es algo engorroso tener que editar el php cada vez que querramos comprimir algún archivo, y para colmo, el ejemplo sólo muestra el código, de manera que hay que ver la fuente, copiar y pegar en un archivo para guardarlo.

Así que por estas razones, opté por crear un pequeño script php el cual permite un upload de archivo y muestra luego una ruta para su descarga.

Continúe leyendo…