2015-12-27 16 views
6

Ben medya dosyalarının çok sayıda işlemek için laravel Kuyrukları kullanıyorumLaravel Kuyruk İşlerimin neden başarısız olduğuyla ilgili daha fazla bilgiyi nasıl edinebilirim?

Durum, bireysel bir iş dakika (sadece bir saat kadar Diyelim) sürmesi bekleniyor.

Kuyruklarımı çalıştırmak için Süpervizör'ü kullanıyorum ve her seferinde 20 işlem yürütüyorum. Müdürüm yapılandırma dosyası şuna benzer:

Ben Failed: Illuminate\Queue\[email protected] fark benim duplitron-worker.log yılında
[program:duplitron-worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1 
autostart=true 
autorestart=true 
user=duplitron 
numprocs=20 
redirect_stderr=true 
stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log 

zaman ortaya çıkan ve daha iyi tam olarak başarısız olduğunun anlamak istiyorum. Laravel.log dosyasımda (istisnaların normalde görüneceği yer) hiçbir şey görünmez.

Soru

benim iş başarısız olmasına neden ne hakkında daha fazla bilgi edinmek için kullanışlı bir yol var mı?

+1

:-) ayıklamaya

iyi şanslar supervisord.conf içinde '' [supervisord] altında 'loglevel' ekleyin. 'Debug' ile başlayabilirsiniz (daha fazlasını buradan kontrol edebilirsiniz: http://supervisord.org/logging.html). Genellikle başarısız olmasının nedeni, çünkü çalıştırdığınız kod doğru "çıkış durumu" ile bitmez. Burada da görebilirsiniz: http://stackoverflow.com/questions/28937722/supervisord-exit-status-1-not-expected-running-php-script Son olarak, config'larınızda stderr_logfile öğesini eklemeniz gerekebilir. . – Axalix

cevap

14

Her zaman yaptığım şey, ama önce - başarısız bir iş tablonuz olduğundan emin ol! İyi,

  1. Çalıştır tüm başarısız olan işleri listelemek ve sonra konum birini seçmek için php artisan queue:failed komut :) bak o kadar belgeli. Kimliği aşağıya yaz.

  2. Sonra supervisorctl stop all duplitron-worker:

  3. Son olarak ile kuyruğunu durdurmak için emin olun, sizin .env gerçek APP_DEBUG = ayarını emin olun.

  4. Sonra hata yapısal (ve çoğu) ise Şimdi elle, kendi günlük dosyasında hata ayıklama yığını ile başarısızlık almalısınız php artisan queue:listen --timeout=XXX

çalıştırmak

  • php artisan queue:retry {step_job_1_id} çalıştırın.

  • +0

    Bu mükemmel - teşekkürler! Şimdi sadece yeniden denediğimde neden işe yaradığını anlamaya ihtiyacım var (aynı zamanda ... başarısız olan görevler, bana kafa karıştırıcı olan 1'e ayarlanmış olsa da, başarısız olan görevler yavaşça yeniden işleniyor, ama bu ayrı bir soru!) – slifty

    +0

    Tek bir takip sorusu var/eğer cevabınıza ekleyebileceğiniz önerileriniz varsa - toplu halde çalışırken bir günlük dosyasında hata kümesini alabilmem için yollar var mı? Sorunun bir kısmının, yalnızca tek bir iş parçacığı çalışırken gerçekleşmeyen kısıtlı kaynaklarla veya muhtemelen zaman aşımlarıyla ilgili olabileceğinden şüpheleniyorum. – slifty

    +2

    Şey, dediğin gibi - eğer iyi solo çalışıyorsa, senaryoyla ilgili değil. Onu daralttın, bu iyi haber Bu en iyi bahisten sistem ve php günlüklerini kontrol etmek olurdu. Orada bir şey olmalı! Büyük olasılıkla bir zaman aşımı veya bellek sıkıntısı :) –

    İlgili konular