2013-06-15 11 views
5

मैंने SO पर कुछ समान प्रश्न देखे हैं लेकिन किसी ने मुझे जवाब नहीं दिया है। मैंने पहले कभी सीआरओएन के बारे में नहीं सुना था और मैं लार्वेल के लिए नया हूं। मुझे अपने डेटाबेस (MySQL) पर कुछ क्रियाएं करने के लिए सप्ताह में एक बार एक कार्य चलाने की ज़रूरत है, हर रविवार को 12:00 बजे कहें। मैं इस लक्ष्य को कैसे प्राप्त कर सकता हूं?विशिष्ट समय पर लार्वेल कार्य चलाना

+0

क्षमा करें, मैं अभी भी anwser –

उत्तर

10

आप क्रॉन का उपयोग कर सकते हैं, तो आप सिर्फ

crontab -e 

निष्पादित करने के लिए अगर आप रूट के रूप में चलाने की आवश्यकता है या,:

sudo crontab -e 

यह तो आप संशोधित कर सकते हैं एक पाठ संपादक खुलेगा अपने crontab और वहाँ आप इस एक के रूप में प्रत्येक अनुसूचित आदेश के लिए एक लाइन होगा,:

1 0 * * * php /var/www/myBlog/artisan task:run 

इस तरह वाई में आदेश प्रत्येक दिन (0h01 या 12h01am) के पहले मिनट में निष्पादित किया जाएगा।

* * * * * <command to execute> 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ │ 
│ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names) 
│ │ │ └────────── month (1 - 12) 
│ │ └─────────────── day of month (1 - 31) 
│ └──────────────────── hour (0 - 23) 
└───────────────────────── min (0 - 59) 

तो, आपके मामले में आप इस तरह की एक पंक्ति बना देंगे:

0 12 * * 0 <command to execute> 

लेकिन आप किसी कार्य के लिए कि क्या करते हो

यहाँ सब इसके बारे में विवरण है लार्वेल में? कई तरीके हैं, उनमें से एक मेरे पहले उदाहरण में है: एक कारीगर कमांड (कार्य: रन) बनाएं और फिर केवल कारीगर चलाएं, या आप केवल अपने ऐप में एक रूट बना सकते हैं जिससे हर बार हिट हो जाए :

Route::get('/task/run',array('uses'=>'[email protected]')); 

और फिर आप बस है इसे अपने crontab जोड़ने के लिए है, लेकिन आप wget या कर्ल की तरह अपने यूआरएल को हिट करने के, कुछ की आवश्यकता होगी:

0 12 * * 0 curl http://mysite.com/run/task 
+0

संपादित कर रहा हूं हां मैंने विकिपीडिया पर देखा है, लेकिन मुझे अभी भी उन आदेशों को चलाने के लिए मेरे ऐप को बताने के लिए नहीं मिलता है, मैं विंडोज़ में काम कर रहा हूं, इसलिए मैं 'सुडो' का उपयोग नहीं कर सकता।मेरे ऐप के विकास के अलावा, क्या यह अभी भी उत्पादन के दौरान काम करेगा? – ecampver

+0

क्रॉन मूल रूप से एक कार्य शेड्यूलर है, आपके पास विंडोज़ (http://puu.sh/3gDDl.png) के लिए भी है। या आप खिड़कियों के लिए क्रॉन स्थापित कर सकते हैं, यह आपके ऊपर है। और आप एक वेबसाइट बना रहे हैं, जैसा कि मैंने कहा था, आप एक यूआरएल बना सकते हैं जो आपके कार्यों को आंतरिक रूप से चलाएगा: टास्ककंट्रोलर == आपका कंट्रोलर लॉस, रन = आपकी विधि, जैसे ही आपकी विधि निकाल दी जाती है, आप जो कुछ भी कर सकते हैं उसे कर सकते हैं , आपको बस उस यूआरएल को हिट करने के लिए कुछ चाहिए और यह आपका कार्य शेड्यूलर है। –

+0

ठीक है, मैं अभी इस पर परीक्षण करने में सक्षम नहीं हूं लेकिन मैं आप पर भरोसा रखूंगा। धन्यवाद ;) – ecampver

2

आप बनाते हैं और अपने laravel कार्य चला सकते हैं किसी भी अन्य Artisan कमांड की तरह कमांड लाइन से। तो यदि आप विंडोज़ पर हैं तो आप यह देखने के लिए मैन्युअल रूप से कमांड चला सकते हैं कि यह काम करता है या नहीं।

फिर जब आप उत्पादन सर्वर पर हों (निश्चित रूप से यह यूनिक्स आधारित है तो बेहतर है) तो आप क्रॉन नौकरी बनाने और क्रॉन टैब में जोड़ने के लिए एंटोनियो की दिशा का पालन कर सकते हैं। ध्यान रखें कि आपको PHP निष्पादन के लिए पूर्ण पथ जानने की आवश्यकता होगी।

मेरे ट्यूटोरियल सब विस्तार से इस बताते हैं: http://maxoffsky.com/code-blog/practical-laravel-using-cron-jobs-in-laravel/

आप जवाब है कि आप देख रहे हैं लगता है आशा है।

3

Laravel 5 के बाद से, केवल प्रवेश आप crontab -e को क्रियान्वित करने के बाद crontab में डाल करने की आवश्यकता है

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1 

अपनी परियोजना विशिष्ट पथ के लिए /path/to/artisan हिस्सा बदलने के लिए याद है है।

और फिर आप अपने निर्धारित कार्यों को परिभाषित कर सकते हैं और लैरवेल के App\Console\Kernel कक्षा में आवृत्ति चलाना कर सकते हैं। अधिक जानकारी के लिए लार्वा दस्तावेज़ देखें: Task Schedule

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