$30 off During Our Annual Pro Sale. View Details »

Laravel5でjobque実装した話

 Laravel5でjobque実装した話

NakanishiTetsuhiro

March 06, 2019
Tweet

More Decks by NakanishiTetsuhiro

Other Decks in Technology

Transcript

  1. Laravel5Ͱ
    jobque࣮૷ͨ͠࿩
    גࣜձࣾRe:Build

    ͯͭ (Twitter: @kaoru6strings)
    2019೥3݄4೔ʢਫʣ
    Larval Meetup Okinawa #08
    https://laravel-meetup-okinawa.connpass.com/event/122396/

    View Slide

  2. ࣗݾ঺հ
    • த੢ ఩େʢͯͭ͞Μ or ͯͬͪΌΜʣ
    • גࣜձࣾRe:BuildɿWebΤϯδχΞ
    • ϦϞʔτϫʔΫͯ͠·͢
    • Laravel + Vue.js, Ruby on rails
    @kaoru6strings

    View Slide

  3. ຊ೔͸job queͷ͓࿩
    @kaoru6strings

    View Slide

  4. ॏ͍ॲཧ͸ผϓϩηεͰ
    ಈ͔͢บΛ͚ͭͯ
    LaravelྗΛΞοϓ͠Α͏ʂ
    @kaoru6strings

    View Slide

  5. Job queͷ࢖͍ॴ
    • ϝʔϧૹ৴
    • Ϣʔβͷಋઢʹ͸ؔ܎ͷͳ͍ॏ͍ͨॲཧ
    • ฒྻ࣮ߦ͕ඞཁͳόονॲཧ
    @kaoru6strings

    View Slide

  6. Ϣʔβʔ͕ϒϥ΢β͔Β೚ҙͷλΠϛϯάͰ
    όονΛ࣮ߦ͢Δ৔߹
    Ϣʔβͷಋઢ
    ͱͳΔϓϩηε
    @kaoru6strings




    ϫʔΧʔ
    όονॲཧͷjobΛΩϡʔʹ౤ೖ
    que
    +PC +PC
    +PC
    +PC
    +PC

    View Slide

  7. ࣄલ४උ̍
    • app/Console/Kernel.phpͷscheduleʹԼهΛ
    ௥Ճ
    • $schedule->command('queue:work --tries=1 --
    timeout=0’)->withoutOverlapping();
    @kaoru6strings

    View Slide

  8. ࣄલ४උ̎
    • crontab -e ͰԼهΛ௥Ճ
    • * * * * * php /var/www/project_name/artisan schedule:run >> /
    dev/null 2>&1
    • php artisan make:job ProcessSomething Ͱ
    ੜ੒ͨ͠ app/jobs/ProcessSomething.phpʹ
    ॲཧΛ௥Ճ
    @kaoru6strings

    View Slide

  9. ࣄલ४උ̏
    • LaravelϓϩδΣΫτͷ͓޷͖ͳ৔ॴʹԼهͷ
    ίϚϯυΛॻ͍ͯɺqueʹjobΛ௥Ճ
    • ProcessSomething::dispatch();
    @kaoru6strings

    View Slide

  10. ͔͜͜Β͸๻͕ϋϚͬͨ
    ϙΠϯτͷ঺հ
    @kaoru6strings

    View Slide

  11. ࣄҊ̍: Τϥʔϩά͕ग़ྗ͞Εͳ͍
    • /storage/logs/laravel.log ΁ͷॻ͖ࠐΈݖݶΛ
    nginxϢʔβͷΈ͕อ͍࣋ͯͨͨ͠Ίɺϫʔ
    ΧʔΛ࣮ߦ͍ͯ͠ΔϢʔβ͕ΤϥʔϩάΛॻ
    ͖ࠐΊͣʹ͍ͨ
    • setfacl -Rdm u::rwx,g::rwx,o::rwx storage
    @kaoru6strings

    View Slide

  12. ࣄҊ̎: ্ཱͪ͛ͨϫʔΧʔ͕ͩ
    Μ·Γಥવࢮ͢Δ
    • Laravel, phpͷϩάʹԿ΋ग़ྗ͞Εͳ͍
    @kaoru6strings

    View Slide

  13. ্ཱͪ͛ͨϫʔΧʔ͕ͩΜ·Γ
    ಥવࢮ͢Δ
    • λΠϜΞ΢τ͍ͯ͠Δͷ͕ݪҼͩͬͨΈ͍ͨ
    • ϫʔΧʔ্ཱͪ͛࣌ͷίϚϯυʹԼهΦϓγϣ
    ϯΛࢦఆͯ͠λΠϜΞ΢τ͠ͳ͍Α͏ʹͨ͠
    • - -timeout=0
    @kaoru6strings
    https://stackoverflow.com/questions/25877752/laravel-queue-process-timeout-error

    View Slide

  14. Tips
    @kaoru6strings

    View Slide

  15. ϫʔΧʔ͕ਖ਼ৗʹ͕͍ͨͪ͋ͬͯΔ͔֬ೝ͍ͨ͠
    • ps -aef | fgrep php
    @kaoru6strings

    View Slide

  16. ςετ؀ڥͰϫʔΧʔͷॲཧ͕๫૸ʂʂ
    • ·ͣ͸ਂݺٵ
    • ps -aef | fgrep php ͰϓϩηεidΛ֬ೝͨ͠Β
    3024൪ͩͬͨ
    • Kill -9 3024
    @kaoru6strings

    View Slide

  17. Laravelͷ.envͰQUEUE_DRIVERΛઃఆ͢Δํ
    ๏Ͱjobͷ؅ཧํ๏ΛมߋͰ͖Δ
    • QUEUE_DRIVER=sync
    • ςετ༻
    • QUEUE_DRIVER=database
    • Laravel͕ར༻͍ͯ͠ΔDBͰҰॹʹjobΛ؅ཧ
    • QUEUE_DRIVER=redis
    • RedisͰjobΛ؅ཧ
    @kaoru6strings

    View Slide

  18. վળ఺ɾٙ໰఺
    • ࠓճ͸KernelʹίϚϯυΛ௥Ճͯ͠ϫʔΧʔ
    Λىಈͤ͞Δํ๏Λͱ͕ͬͨɺຊ౰͸
    SupervisorΛઃఆͨ͠΄͏͕͍͍Β͍͠
    • Laravel forge(https://forge.laravel.com/)Λ
    ࢖ͬͨΒઃఆ͕؆୯Β͍͚͠Ͳɺ࢖ͬͨ͜
    ͱ͋Δਓ͍·͔͢ʁ
    @kaoru6strings

    View Slide

  19. ΈΜͳͰJob que࢖͓͏ʂ
    @kaoru6strings

    View Slide

  20. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    @kaoru6strings

    View Slide