Subscribe to comments. Evitar timeouts, error 500, cuando hay muchos suscriptores

Soy usuario del fantástico plugin suscribe-to-comments desde hace algún tiempo. Este plugin sirve para que los lectores del blog puedan suscribirse a los comentarios de un post recibiendo en su correo eléctronico un mensaje cada vez que alguien escribe un mensaje nuevo.

Sin embargo me encontré con un problema: cuando son muchos los suscriptores, el script php tarda bastante tiempo en dar respuesta por lo que la página termina en un error 500 o un timeout después de hacer esperar durante un buen rato al usuario que ha dejado un comentario.

Para solucionar esto he insertado las siguientes lineas en el archivo subscribe-to-comments.php al principio de la función send_notifications() en la línea 594.

// begin hack
ignore_user_abort(true);
set_time_limit(1);

ob_end_clean();
$location = ( empty($_POST['redirect_to']) ? get_permalink($comment->comment_post_ID) : $_POST['redirect_to'] );
Header(”Location: “.$location);

header(”Connection: close”);
ob_start();

$size = ob_get_length();
header(”Content-Length: $size”);
ob_end_flush(); // Strange behaviour, will not work
flush();            // Unless both are called !
// end hack

La versión que he usado del plugin es:

Plugin Name: Subscribe To Comments
Version: 2.1

Agradezco la siguiente contribución de un usuario en el manual php que según cuenta, tardo más de 3 horas en encontrar la solución para cerrar la conexión con el navegador y que el script siga ejecutándose. http://php.mirror.camelnetwork.com/manual/en/features.connection-handling.php#71172

Busco piso económico en Granada

8/2/2007 - -

De 2 o 3 dormitorios. Preferentemente en la Chana, aunque no me importa cualquier otra zona no muy lejana del centro de la ciudad.
Puedo gastar como máximo 400 € de alquiler.
Preguntar por Gabriel al 695958115

Terremoto en Chauchina, Granada

6/1/2007 - -

El 4 de Enero se dejo sentir un intenso terremoto que se sintió sobre todo en Granada y hasta en Málaga capital de magnitud Richter 4.0 más información en este blog de geología

Número de Teléfono. Nuevo blog

30/12/2006 - -

http://www.numerodetelefono.net

Estoy separando el tráfico que tengo en mi blog personal relacionadas con consultas sobre averiguaciones de identidad de titulares de números de teléfono. Como parte de este proceso aparece un nuevo blog: número de teléfono. Dentro de unas semanas añadiré herramientas para poder garantizar un servicio de identificación del dueño de los números de teléfonos desde los que se realizan abusos.

Felices fiestas !

Actualización del 21 de Enero: también he separado las visitas que entran buscando información sobre la gran muralla china a otro blog http://gran-muralla-china.com

Llamar gratis por el teléfono móvil

29/12/2006 - -

Leo en el blog de Patrick que ha conseguido llamar con su teléfono Nokia E60 (también serviría para E50, E61, E62, E70 y N80) a través de la Wifi integrada. Si quieres probar esta experiencia sin muchos quebraderos de cabeza, consulta cómo configurar un teléfono de la serie 60 de Nokia con wifi para llamar por voipbuster.

Por fin he hecho funcionar Voipbuster en mi Nokia E60. He tardado un rato ya que no hay mucha ayuda por la red y la mayoria de la gente que lo ha intentado no lo ha conseguido. Lo que si se encuentra, son muchos articulos explicando como conectar el E60 con Asterisk, para que la telefonía IP funcione en tus propias oficinas. Pero yo no me he comprado el telefono con este fín. La idea fue poder hacer llamadas con Voipbuster, esté donde esté (siempre que hubiese una red wireless disponible). Asi que busqué alternativas a la aplicación SIP que viene con el teléfono. Algo con soporte STUN u otro proveedor que ya ofrece alguna aplicación SIP para Symbian… seguir leyendo

Convertir plantillas PHP de WordPress a Smarty de BlogMail

BlogMail es un proyecto que usó como base lo que era el repositorio SVN de WordPress MU hace algún tiempo. Sin embargo BlogMail ha ido desarrollandose paralelamente y distanciándose de WordPress MU en lo que se refiere a la instalación, administración y funcionamiento interno. Por supuesto la característica fundamental que lo diferencia es que BlogMail está preparado para servir como cliente de correo a sus usuarios dando la posibilidad de publicar sus mensajes.
Según ha pasado el tiempo, se han implementado ciertas carácteristicas que WordPress MU no, como son:
- Autenticación por LDAP. Un nuevo usuario de BlogMail adquiere también un buzón de correo correspondiente así como cualquier otro servicio que funcione en el servidor bajo el esquema LDAP.
- Uso por defecto de subdominios para diferenciar los diferentes mailblogs. Dependiendo de la versión de WordPress MU, es tediosa la configuración de los subdominios (si me equivoco corríjanme). Cuando un usuario abre un nuevo mailblog llamado “al”, este obtendrá una web con url http://al.blogmail.cc y una cuenta de correo al (arroba) blogmail.cc
- Se sigue manteniendo Smarty como sistema de plantillas. En el SVN de WPMU, la última vez que eché vistazo esta característica no funcionaba. No se si es que han cambiado de idea o que van a volver a reimplementarlo. El hecho es en BlogMail se mantiene y actualiza el soporte de Smarty.

Bueno. Llegados al punto de las plantillas resulta que mientras hay cientos de plantillas php para WordPress, hay muy pocas para BlogMail o WPMU-Smarty. Por eso escribí un script muy simple para hacer la mayor parte de la traducción de plantillas PHP a Smarty.

En ocasiones es necesario retocar la plantilla generada para conseguir mayor fidelidad con la original, sobre todo si la plantilla utiliza llamadas a otras funciones que no son las de BlogMail.

El traductor de plantillas funciona para BlogMail, sin embargo con unas modificaciones podría servir para WPMU-Smarty en cuanto se aclaren si van a seguir usando Smarty o no.

Download the software: php2smarty-0.1.tar.bz2

Para usarlo, descárgate una plantilla de WordPress de, por ejemplo, el browser de plantillas de Alex y ejecuta el script p2s.php de la siguiente manera:

./p2s.php directorio-de-la-plantilla-php directorio-destino-smarty

El directorio de destino será creado conteniendo una plantilla smarty que, en la mayoría de las veces, no habrá que retocar para que funcione en BlogMail.

Lyceum funcionando con subdominios

28/3/2006 - -

Actualización: la última versión de Lyceum ya integra soporte de subdominios y no es necesario usar este parche.

Lyceum es un fork de WordPress MU una rama de WordPress (no WordPress MU) que almacena toda la información de todos los blogs en unas 14 tablas, en vez de crear un nuevo juego de tablas por cada blog que se crea.

La mayoría de las veces que le he estado echando un vistazo al SVN de WordPress MU me he encontrado con numerosas características rotas e incongruencias por las cuales no se puede esperar que un administrador neófito se desenvuelva bien en su instalación y puesta en funcionamiento.

Sin embargo en Lyceum la administración e instalación del sitio está rústicamente rediseñada para que funcione, mientras que la interfaz privada para los usuarios de los diferentes blogs, estéticamente es la de WordPress 2.0.

Uno de los defectos de Lyceum es que todavía no soporta “oficialmente” la gestión de subdominios tal como podemos leer en ese ticket. Es decir, se accede a los diferentes blogs a través de la ruta de la petición web y no gestiona diferentes blogs en diferentes subdominios.

Para eso he hecho un parche subdomain.patch.gz que es una primera implementación de la característica de gestión de subdominios.

Para aplicarlo, primero nos bajamos el nighty build de lyceum de la sección de descargas de Lyceum y el parche mencionado anteriormente.

Suponiendo que tenemos los 2 archivos en el mismo directorio hacemos lo siguiente:

$ tar xzf lyceum_nightly.tgz
$ cd tmp/lyceum_nightly/
$ zcat ../../subdomain.patch.gz | patch -p0
patching file lyceum/src/config/wp-config-sample.php
patching file lyceum/src/lib/wp-admin/admin-header.php
patching file lyceum/src/lib/wp-admin/upgrade-schema.php
patching file lyceum/src/lib/wp-includes/classes.php
patching file lyceum/src/lib/wp-includes/functions.php
patching file lyceum/src/lib/wp-includes/template-functions-general.php
patching file lyceum/src/lib/wp-settings.php
patching file lyceum/src/lyceum/index.php
patching file lyceum/src/lyceum/portal.php
patching file lyceum/src/lyceum/wp-blog-header.php

Bueno, espero que el parche le sirva a alguien. Cualquier pregunta, no hay más que comentarla.

Desmontar el CD al pulsar el botón eject en linux

Tradicionalmente en linux, para abrir la bandeja del CD o DVD es necesario primero desmontarlo. En un entorno como Gnome o Kde, esto se hace pulsando botón derecho sobre un icono que representa un disco compacto y eligiendo “desmontar” o similar.

Cuando un CD está montado y alguna aplicación lo está leyendo, o simplemente tienes abierto el navegador de archivos o una terminal en uno de sus directorios, la bandeja de CD queda bloqueada.

Esto tiene un motivo, claro. Quienes colaboran en el desarrollo de nuestro sistema operativo libre estiman que hacemos cosas importantes con nuestros CDs y DVDs, y claro, sacar el CD mientras lo estamos usando puede traer muchos problemas. Por ejemplo si estamos comprimiendo un DVD a DIVX que hemos alquilado y cuando está a punto de terminar el proceso un imbécil le da al eject, esto puede convertirse en un contratiempo. Sobre todo si has alquilado por horas.

Sin embargo sigue habiendo impacientes e insensatos que prefieren sacar el CD pulsando el botoncito. Pues es tan simple como añadir la línea “sysctl dev.cdrom.lock=0″ (sin las comillas) en el archivo de configuración /etc/sysctl.conf y reiniciar.

Y a partir de ahora al pulsar el botón “eject” del lector de CD o DVD, este se abrirá echando leches (muy rápidamente).

Sin embargo, creo que es mejor desmontar y extraer el CD de la forma tradicional en Linux ya que dice la leyenda que por culpa de Microsoft tan imprudente al permitir en su sistema inoperativo sacar el CD mientras está dando vueltas, a algún pobre desgraciado le saltó el disco seccionándole el cuello.

Mejorar el rendimiento con swappiness

Una de las novedades que ha aportado el kernel linux a partir de la versión 2.6 (entre muchas otras características) es la posibilidad de ‘tunear’ la gestión de la memoria virtual.

La memoria virtual sirve para que las aplicaciones dispongan de más memoria de la que físicamente existe.

Por poner un ejemplo: cuando ejecutamos una aplicación pesada como OpenOffice que requiere mucha cantidad de memoria, el kernel transfiere a la partición de intercambio (SWAP) aquellos datos de otras aplicaciones que no están siendo usados en ese momento. De la misma manera, si minimizas el OpenOffice durante unas cuantas horas mientras navegas por internet, ves unas películas y actualizas la Ubuntu, lo más probable es que gran parte de los datos que necesita OpenOffice hayan sido transferidos de la memoría RAM a la partición de intercambio.

El proceso por el cual se transfieren datos entre la RAM y la partición de intercambio del disco duro se llama “swapping”. Es una característica muy importante de cualquier sistema operativo avanzado, sin embargo, si la computadora está continuamente realizando esta tarea, nuestro rato delante de la pantalla puede convertirse en un infierno en el que el disco duro no para de crujir ni un momento.

Para esto existen soluciones como usar alternativas de software más ligeras a los entornos gráfico Gnome o KDE como puede ser XFCE, usar un navegador de archivos como Rox, o conseguir más memoria. Con 512M no deberíamos tener ningún problema.
Bueno, después de esta introducción, vayamos al tema.

Abrimos una terminal y escribimos lo siguiente:

$ cat /proc/sys/vm/swappiness

El resultado es un número entre 0 y 100 que nos dice la tendencia que tiene el kernel a transferir memoria no usada a la partición de intercambio. A valor más alto, más swapping. El valor por defecto en Ubuntu y en la mayoría de las distribuciones es 60.
Para cambiar este valor en cualquier momento, por ejemplo a 10 hacemos:
$ sudo sysctl vm.swappiness=10

Abrimos y cerramos unas cuantas aplicaciones y según el caso se puede notar una gran mejora a la respuesta que nos dan las aplicaciones. A mi máquina puedo decir que le ha sentado estupendamente ;)
Si estamos conformes con este valor, solo queda fijarlo para que sea el que se defina al arrancar editando el archivo /etc/sysctl.conf

Añadimos una línea como esta:

vm.swappiness=10

Y tunning terminado

En la guía no oficial de ubuntu nos explican esta optimización y otras más en la sección Optimizar escritorio. Bueno, los mismos trucos sirven también para otras distribuciones.

Qué escribir

14/3/2006 - -

Llevo ya un mes sin postear. De vez en cuando pienso en que debería ponerme a escribir algo pero el problema es ¿ qué ?.

Aunque no postee sigo haciendo algún que otro hack a WordPress aunque me he volcado más con BlogMail que es un fork de WordPress preparado para funcionar como un webmail y en el que puedes decidir los mensajes que quieres que sean públicos. Mi mailblog es este. Aunque el diseño que le he puesto hace daño a los ojos, puede dar una idea de lo que es. Deberíamos cuanto antes poner fin al spam instalando spamassasin en el servidor de correo.
El sistema de plantillas que usamos es Smarty. Este sistema de plantillas lo he adoptado para varios proyectos ya que tiene un montón de características interesantes como la separación total de la lógica y el diseño, cache, plugins y etc
Bueno… seguire escribiendo