2013-07-01 8 views
5

Sono abbastanza nuovo per l'intera faccenda dei processi Queue in Laravel 4. Ho alcune attività di processo pesanti Ho bisogno che il sito venga eseguito in background dopo essere stato licenziato dall'utente che sta facendo un azione particolare.Come licenziare le code di Laravel con beanstalkd

Quando stavo facendo dello sviluppo locale per il mio sito ho usato questo:

Queue::push('JobClass', array('somedata' => $dataToBeSent)); 

E stavo usando il driver locale "sync" per farlo. (I lavori si attivano automaticamente, influendo sull'esperienza utente, ma ho ipotizzato che durante la fase di produzione avrei potuto passare a beanstalkd e sarebbero stati eseguiti in background)

Che mi porta dove sono a ora. Ho installato beanstalkd con le dipendenze installate con il compositore e il processo beanstalkd in ascolto di nuovi lavori. Ho installato un'interfaccia di amministrazione di beanstalk e posso vedere i miei lavori andare in coda, ma non ho idea di come farli effettivamente eseguire!

Qualsiasi aiuto sarebbe appreso, grazie!

risposta

18

Questa è in realtà una funzionalità molto mal documentata in Laravel.

Quello che in realtà è necessario è avere JobClass.php in una cartella che è auto-caricata, io uso app/comandi, ma possono anche essere in app/controller o app/modelli, se lo desideri. E questa funzione deve avere un evento di fuoco che prende l'argomento $ lavoro e $ dati.

Per eseguirli, è sufficiente eseguire php artisan queue:listen --timeout=60 nel terminale e sarà impegnato a svuotare la coda, finché non sarà vuota, oppure è in esecuzione da più di 60 secondi. (Piccola nota: il timeout è start una coda, quindi può essere eseguito per 69 secondi se 1 lavoro richiede 10 secondi

Se si desidera eseguire solo 1 lavoro (perfetto per il test), eseguire php artisan queue:work

ci sono strumenti come Supervisord che assicurarsi che i gestori di lavoro continuano a correre, ma vi consiglio di fare solo un compito Cron che inizia ogni X minuti sulla base di quanto velocemente i dati devono essere elaborati, e sulla quantità di dati entra

+0

Grazie, questo ha risolto tutto! – Tyrone

+0

Grazie. Laravel ha davvero bisogno di una documentazione migliore. Un ottimo framework, ma con una documentazione scadente fa ancora schifo. – woens

0

Ricorda che devi seguire il tuo artigiano

php/some/path/to/artisan queue: work

Problemi correlati