2014-12-22 8 views
8

Ho installato beanstaled e funziona bene con laravel. Il punto in cui sto perplesso è che abbiamo a che fareCome funziona la coda di Laravel e cosa succede se php artisan fa la coda: ascolta ferma

php artisan queue:listen 

per iniziare ad ascoltare coda. In questo momento, sto usando l'istanza di amazone ec2 da remoto attraverso il mastice. ma cosa chiudo terminale? I lavori creati tramite il codice funzioneranno? Si chiama manualmente php artisan queue:listen o php artisan queue:work tutte le volte. Che non sembra giusto.

Se una volta effettuato il php artisan queue:listen, continuerà a funzionare anche se chiudiamo il terminale?

In realtà non lo so.

risposta

11

è necessario installare anche supervisore. Ecco un tutorial su come utilizzare beanstalkd con laravel:

http://fideloper.com/ubuntu-beanstalkd-and-laravel4

Qui ci sono dettagli su supervisor anche:

http://supervisord.org/installing.html

Io personalmente uso un'istanza Redis e correre la mia coda con il supervisore da lì. Trovo che la sua memoria sia un po 'più efficace di quella di beanstalkd, ma ognuno di loro possiede.

Supervisore eseguirà la coda: ascolta il comando da artisan e questo eseguirà un lavoro, se si dispone di più processi supervisore, è possibile eseguire più elementi pubblicitari. a seconda di ciò che si sta facendo vorrei quasi guardare in python e multitheading anche come ho usato questo per alcune cose che ho usato per usare una coda per e ha fornito risultati ancora migliori.

esempio file di configurazione per supervisor:

[program:myqueue] 
command=php artisan queue:listen --env=your_environment 
directory=/path/to/laravel 
stdout_logfile=/path/to/laravel/app/storage/logs/myqueue_supervisord.log 
redirect_stderr=true 
autostart=true 
autorestart=true 
+1

ma per quanto riguarda 'php artisan queue: listen', la domanda principale era quella –

+6

Questo risponde alla domanda, anche se indirettamente. 'coda php artisan: listen' funzionerà per un po '(non riesco a ricordare il timeout) e quindi esco. Questa è una limitazione di PHP. Una volta che si ferma, non verranno eseguiti altri lavori. Per ovviare a questo, installare 'supervisor' come suggerisce la risposta -' supervisor' guarderà il processo 'queue: listen' e lo riavvierà quando fallisce. – Kryten

0

Si può anche fare uso di di laravel Task Scheduler cioè aggiungere il comando php artisan queue:listen allo scheduler e imposta la sua frequenza a tutto ciò che vuole.

In questo modo sarà necessario chiamare automaticamente il processo di ascolto in coda.

Spero che abbia senso.

+0

Non verrà generato un nuovo processo ogni volta che viene eseguito lo scheduler? – user2212873

Problemi correlati