Recientemente he estado investigando el uso de Beanstalkd con PHP. He aprendido bastante, pero tienen algunas preguntas acerca de la configuración de un servidor, etc.Cómo configurar Beanstalkd con PHP
Así es como yo lo veo de trabajo:
- instalo beanstalkd y las dependencias (como libevent) en mi servidor Ubuntu Luego inicio el daemon Beanstalkd (que básicamente debería ejecutarse en todo momento).
- En algún lugar de mi sitio web (como cuando un usuario realiza algunas acciones, etc.) las tareas se agregan a varios tubos dentro de la cola de Beanstalkd.
Tengo un script bash (como el siguiente) que se ejecuta como un deamon que básicamente ejecuta un script PHP.
#!/bin/sh php worker.php
4) El guión trabajador tendría algo como esto para ejecutar los en cola tareas:
while(1) {
$job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
$job_encoded = json_decode($job->getData(), false);
$done_jobs[] = $job_encoded;
$this->log('job:'.print_r($job_encoded, 1));
$this->pheanstalk->delete($job);
}
Ahora aquí están mis preguntas en base a la configuración anterior (que me corrija si me me equivoco al respecto):
Supongamos que tengo la tarea de importar una fuente RSS en una base de datos o algo así. Si 10 usuarios hacen esto a la vez, todos estarán en cola en el tubo de "prueba". Sin embargo, solo se ejecutarían uno a la vez. ¿Sería mejor tener 10 tubos diferentes todos ejecutando al mismo tiempo?
Si necesito más tubos, ¿significa eso que necesitaría 10 scripts de trabajador? Uno para cada tubo que se ejecuta simultáneamente con básicamente el mismo código, excepto el literal de cadena en la función watch().
Si ejecuto ese script como daemon, ¿cómo funciona? ¿Ejecutará constantemente el script worker.php? Esa secuencia de comandos se repite hasta que la cola está vacía teóricamente, ¿por lo que no debería iniciarse solo una vez? ¿Cómo decide el daemon con qué frecuencia ejecutar worker.php? ¿Es solo un ajuste?
Gracias!
¡Gracias por los enlaces! Definitivamente los investigaré. Una pregunta sobre el n. ° 2: ¿con qué frecuencia se ejecutaría ese guión? ¿Está completamente basado en la frecuencia con la que el daemon ejecuta mi script bash? – joshholat
Además, ¿hay alguna forma conveniente (mediante un fragmento de código o tipo de tablero de instrumentos) de ver qué se está ejecutando todo, etc. con beanstalk? – joshholat
la mayoría de las bibliotecas debe proporcionar una llamada a los comandos de estadísticas, lista de tubos y stat-tubes. También hay algunos otros. No he visto https://github.com/andreisavu/django-jack en ejecución, pero eso también puede hacer algunas cosas. –