2010
07.13

Beanstalk es un software que permite poner tareas en cola, esto puede ser muy útil a la hora de realizar procesos que requieren mucho tiempo de ejecución y que pueden deteriorar la experiencia del usuario.

Al poner los procesos en cola, nuestra aplicación puede seguir su curso normal mientras se ejecutan las tareas encoladas en segundo plano, sin que el usuario lo note.

Para poder instalarlo en Debian o Ubuntu, debemos descargar la fuente y descomprimirla:

apt-get install libevent-1.4-2 libevent-dev
wget http://xph.us/dist/beanstalkd/beanstalkd-1.4.6.tar.gz
tar xzfv beanstalkd-1.4.6.tar.gz

Y se ejecuta:

beanstalkd -d -l 0.0.0.0 -p 11300

Esto causa que beanstalkd inicie en modo demonio, escuchando todas las direcciones en el puerto 11300.

La utilización de esta herramienta con CakePHP está muy bien explicada .

Con mi propia experiencia puedo aportar algunas cosas:
Enterrar procesos fallidos:

Cuando encolamos un proceso y este falla, podemos eliminarlo definitivamente o enterrarlo, para que luego pueda volver a ser ejecutado por beanstalk. Este método se llama “buri” y se usa más o menos asi:

En un shell de CakePHP (1.3):

 PHP |  copy code |? 
01
02
<?php
03
class EnviarMailShell extends Shell
04
{
05
	var $uses = array('Queue.Job');
06
	var $tubes = array('enviar_mail');
07
 
08
	function main()
09
	{
10
		App::import('Correo');
11
		while (true) {
12
			$job = $this->Job->reserve(array('tube' => $this->tubes));
13
			$correo = new Correo();
14
			if ($correo->EnviarCorreo($job['Job']['id_usuario'])) {
15
				$this->Job->delete();
16
				$this->out('Se ha enviado el correo exitosamente');
17
			} else {
18
				$this->Job->bury(); //En caso de falla, lo enterramos!
19
			}
20
		}
21
	}
22
}
23
?>
24

Volvemos a encolarlo con Kick:

 PHP |  copy code |? 
1
2
ClassRegistry::init('Queue.Job')->kick(array('tube' => 'enviar_mail'));
3

Espero que les sirva.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 10.0/10 (2 votes cast)
2010
07.13

En la nueva versión de CakePHP 1.3, es posible dejar de usar prototype y cambiarse a jQuery gracias a que cake permite seleccionar que motor de javascript vanos a usar, gracias al JsHelper

 'php' |  copy code |? 
1
var $helpers = array('Js' => array('Jquery'));

Por defecto los scripts están en una caché, por lo que deben ser escrito al final de la página:
 'php' |  copy code |? 
1
echo $js->writeBuffer();

Gracias a esto, ya no debemos depender solamente de prototype y scriptaculous, ahora podemos usar nuestro fiel jQuery nativamente con CakePHP.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
2010
07.12

Esto lo pongo a modo de recordatorio, porque siempre que necesito hacer esto, olvido algún detalle.
Primero que nada, debemos hacer una copia del archivo de configuración Apache /etc/apache2/sites-available/default y renombrarla como queramos, en este caso miblog:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/miblog

Se debe editar y cambiar la slíneas

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName miblog
DocumentRoot /var/www/miblog
<Directory /var/www/miblog/>

Apuntando al directorio que vanos a usar para poner nuestro sitio.

Debemos darle los permisos al directorio que va a alojar nuastro sitio virtual:

sudo chmod 776 -R /var/www/miblog/

Luego agregamos el sitio virtual a Apache:

sudo a2ensite miblog

Y reiniciamos Apache:

sudo /etc/init.d/apache2 restart

Y listo, ahora podemos agregar una entrada en /etc/hosts

127.0.0.1 miblog

Y ya está.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 8.0/10 (1 vote cast)