2015-06-17 4 views
6

मैंने होमस्टेड वीएम में चल रहे लार्वेल 5.1 एप में एक नया काम किया है। मैंने इसे कतारबद्ध करने के लिए सेट किया है और हैंडल विधि में कोड है।लार्वेल 5.1 वीएम के बिना जॉब फ़ाइल में परिवर्तन नहीं देख रहा है

हैंडल() विधि पिछली बार एक पारित होने की उम्मीद है, लेकिन अब इसकी आवश्यकता नहीं है और मैंने पैरामीटर को हैंडल विधि को हटा दिया है। है उस फ़ाइल की

[2015-06-17 14:08:46] local.ERROR: exception 'ErrorException' with message 'Missing argument 1 for Simile\Jobs\SpecialJob::handle()' in /home/vagrant/Code/BitBucket/simile-app/app/Jobs/SpecialJob.php:31 

लाइन 31:

हालांकि, जब कतार काम समाप्त होने पर मुझे एक त्रुटि कह प्राप्त

public function handle() 

इसकी लंबे समय तक नहीं कोई पैरामीटर की उम्मीद कर, जब तक कि वहाँ एक डिफ़ॉल्ट है एक दस्तावेज नहीं है।

अब कोई भी परिवर्तन जो मैं करता हूं, जिसमें जॉब फ़ाइल में सभी सामग्री टिप्पणियां शामिल नहीं होती हैं जब मैं कतार चलाता हूं। मुझे अभी भी वही त्रुटि मिल जाएगी। artisan cache:clear, artisan clear-compiled, artisan optimize, composer dumpautoload:

Ive nginx, php5-fpm, supervisor, beanstalkd, और चल रहा है को पुन: प्रारंभ करने की कोशिश की।

कुछ भी काम नहीं करता है।

नौकरी फ़ाइल में अपडेट किए गए किसी भी को देखने के लिए मुझे लार्वेल मिल गया एकमात्र तरीका वीएम को पुनरारंभ करना है। vagrant halt, फिर vagrant up

काम इस तरह एक कंसोल आदेश में शुरू हो रहा है:

$this->dispatch(new SpecialJob($site->id)); 

यहाँ SpecialJob.php फ़ाइल का पूरा कोड है:

http://laravel.io/bin/qQQ3M#5

मैं एक और नया कार्य बनाया और परीक्षण की कोशिश की, मुझे एक ही परिणाम मिलता है।

अन्य सभी गैर-नौकरी फ़ाइलें तत्काल अपडेट नहीं, कोई समस्या नहीं। यह सिर्फ नौकरी फाइलें हैं। एक पुरानी प्रति की तरह कहीं कैश किया जा रहा है मुझे नहीं मिल रहा है।

+0

आप कतार कार्यकर्ता पर '--daemon' ध्वज का उपयोग कर रहे हैं: आप शान से अपनी तैनाती स्क्रिप्ट में निम्न आदेश को शामिल करके श्रमिकों के सभी पुनरारंभ हो सकता है? – ceejayoz

+0

@ceejayoz हाँ, मैं हूं। – Nicekiwi

+0

क्या आप 'php artisan queue: restart' चला रहे हैं जैसा कि डिमन के लिए दस्तावेज़ों में इंगित किया गया है? – ceejayoz

उत्तर

15

कतार कार्यकर्ता as a daemon चलाते समय, आपको कोड परिवर्तन के बाद कार्यकर्ता को पुनरारंभ करना होगा।

चूंकि डेमॉन कतार श्रमिक लंबे समय तक चलने वाली प्रक्रियाएं हैं, इसलिए वे आपके कोड में पुनरारंभ किए बिना परिवर्तन नहीं उठाएंगे। इसलिए, डेमॉन कतार श्रमिकों का उपयोग करके किसी एप्लिकेशन को तैनात करने का सबसे आसान तरीका है कि आप अपनी तैनाती स्क्रिप्ट के दौरान श्रमिकों को पुनरारंभ करें।

php artisan queue:restart 
+2

धन्यवाद। इस हाहा पर 2 दिनों के लिए मेरे सिर को टक्कर लगी! : पी नैतिक: कभी नहीं मानें। – Nicekiwi

+1

वाह! यह अच्छा है!असली अच्छा एक! इसे लार्वेल रखें: डी: डी धन्यवाद ceejayoz! – BlackBurn027

+0

पवित्र धूम्रपान, मैंने अभी भी इस अजीब समस्या का अनुभव किया और आपका जवाब देखने में प्रसन्नता हुई। http://stackoverflow.com/questions/28623001/how-to-keep-laravel-queue-system-running-on-server#comment73972105_28625847 ने भी मेरी मदद की। और यह दिलचस्प लग रहा है: http://stackoverflow.com/a/32851454/470749 – Ryan

संबंधित मुद्दे