{"id":27539,"date":"2021-05-11T16:42:00","date_gmt":"2021-05-11T13:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27539"},"modified":"2021-10-18T03:48:02","modified_gmt":"2021-10-18T00:48:02","slug":"uzywanie-harmonogramu-cron-w-laravel-do-automatyzacji-zadan","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/uzywanie-harmonogramu-cron-w-laravel-do-automatyzacji-zadan\/","title":{"rendered":"U\u017cywanie Harmonogramu Cron w Laravel do automatyzacji zada\u0144"},"content":{"rendered":"<p>Zadanie crona przydaje si\u0119 do zautomatyzowania naszego zadania w okre\u015blonym czasie w regularnych odst\u0119pach czasu. Laravel jest dostarczany z funkcj\u0105 planowania zada\u0144, kt\u00f3ra sprawia, \u017ce \u200b\u200bharmonogram crona jest bardzo \u0142atwy. W przesz\u0142o\u015bci musieli\u015bmy doda\u0107 osobny wpis dla ka\u017cdego zadania cron. W Laravelu wystarczy doda\u0107 jedno polecenie, kt\u00f3re automatycznie uruchomi wszystkie nasze zadania cron. Nie ma potrzeby dodawania osobnego wpisu dla ka\u017cdego zadania. W tym artykule przyjrzymy si\u0119 wykorzystaniu harmonogramu cron w Laravel, kt\u00f3ry pomaga nam zautomatyzowa\u0107 nasze zadania.<\/p>\n<h3>Dlaczego musimy uruchomi\u0107 Crona?<\/h3>\n<p>Istnieje kilka przyk\u0142ad\u00f3w, o kt\u00f3rych mo\u017cemy wspomnie\u0107, gdzie musimy uruchomi\u0107 crona. By\u0107 mo\u017ce prowadzisz sklep internetowy i chcesz wysy\u0142a\u0107 u\u017cytkownikom oferty promocyjne. Lub masz witryn\u0119 cz\u0142onkowsk\u0105 i musisz wys\u0142a\u0107 u\u017cytkownikom wiadomo\u015b\u0107 e-mail z przypomnieniem o okresie odnowienia subskrypcji. To s\u0105 dwa przyk\u0142ady, w kt\u00f3rych mo\u017cemy u\u017cy\u0107 crona. Co robimy, to piszemy program, kt\u00f3ry mo\u017ce wykona\u0107 to zadanie i ustawiamy dla niego crona. Tw\u00f3j serwer b\u0119dzie szuka\u0142 czasu okre\u015blonego dla crona i gdy ten czas nadejdzie, automatycznie uruchomi program. Nie musimy patrze\u0107 na zegar i uruchamia\u0107 programu r\u0119cznie.<\/p>\n<p>Ten proces u\u0142atwia nam \u017cycie. Mo\u017cemy skupi\u0107 si\u0119 na innych wa\u017cnych rzeczach i zainwestowa\u0107 czas w m\u0105dr\u0105 rzecz.<\/p>\n<h3>Harmonogram crona w Laravel<\/h3>\n<p>W naszym artykule we\u017amy przyk\u0142ad ze \u015bwiata rzeczywistego. Za\u0142\u00f3\u017cmy, \u017ce mamy grup\u0119 u\u017cytkownik\u00f3w w naszej bazie danych Laravel. O p\u00f3\u0142nocy musimy wys\u0142a\u0107 e-mail do wszystkich u\u017cytkownik\u00f3w z opisem naszej nowej oferty promocyjnej. Dzi\u0119ki temu nasi u\u017cytkownicy s\u0105 powiadamiani o nowych ofertach, a Twoja sprzeda\u017c mo\u017ce przyci\u0105gn\u0105\u0107 wi\u0119ksz\u0105 uwag\u0119.<\/p>\n<p>Zak\u0142adamy, \u017ce zapisa\u0142e\u015b wszystkie informacje o swoim u\u017cytkowniku w tabeli \u201eu\u017cytkownicy&quot;. Otrzymamy e-maile u\u017cytkownik\u00f3w z tej tabeli i wy\u015blemy im e-mail. Oczywi\u015bcie musimy napisa\u0107 kod w taki spos\u00f3b, aby uruchamia\u0142 si\u0119 o p\u00f3\u0142nocy.<\/p>\n<p>Otw\u00f3rz <code>app\/Console\/Kernel.php<\/code>plik w swoim edytorze i dodaj model u\u017cytkownika oraz fasad\u0119 poczty do pliku.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppConsole;\n\u00a0\nuse IlluminateConsoleSchedulingSchedule;\nuse IlluminateFoundationConsoleKernel as ConsoleKernel;\nuse AppUser; \/\/ User model\nuse Mail; \/\/ Mail Facade\n\u00a0\nclass Kernel extends ConsoleKernel\n{\n\u00a0\u00a0\u00a0\u00a0....<\/code><\/pre>\n<p><code>Kernal<\/code>class ma metod\u0119, w <code>schedule<\/code>kt\u00f3rej musimy napisa\u0107 jeden lub wiele harmonogram\u00f3w. Poniewa\u017c musimy wys\u0142a\u0107 e-mail do naszych u\u017cytkownik\u00f3w, piszemy kod w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppConsole;\n\u00a0\nuse IlluminateConsoleSchedulingSchedule;\nuse IlluminateFoundationConsoleKernel as ConsoleKernel;\nuse AppUser;\nuse Mail;\n\u00a0\nclass Kernel extends ConsoleKernel\n{\n\u00a0\u00a0\u00a0\u00a0....\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Define the application's command schedule.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 IlluminateConsoleSchedulingSchedule\u00a0 $schedule\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected function schedule(Schedule $schedule)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$schedule-&gt;call(function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_users = User::all();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(count($arr_users) &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach ($arr_users as $user) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$name = $user-&gt;name;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$email = $user-&gt;email;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = array(\"name\" =&gt; $name, \"body\" =&gt; \"This is our new promotional offer\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Mail::send('emails.mail', $data, function($message) use ($name, $email) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message-&gt;to($email, $name)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;subject('New Offer Launched');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message-&gt;from('admin@artisansweb.net', 'Artisans Web');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})-&gt;daily();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ tou can add more schedules here\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0....<\/code><\/pre>\n<p>W powy\u017cszym kodzie pobieramy u\u017cytkownik\u00f3w z bazy danych i wysy\u0142amy im e-mail za pomoc\u0105 metody send fasady Mail. Tutaj musimy utworzy\u0107 <code>mail.blade.php<\/code>pliki w <code>resources\/views\/emails<\/code>katalogu.<\/p>\n<p><strong>mail.blade.php<\/strong><\/p>\n<pre><code>Hi &lt;strong&gt;{{ $name }}&lt;\/strong&gt;,\n\u00a0\n&lt;p&gt;{{ $body }}&lt;\/p&gt;<\/code><\/pre>\n<p>Poniewa\u017c naszym zadaniem jest wys\u0142anie e-maila o p\u00f3\u0142nocy, zastosowali\u015bmy t\u0119 <code>daily()<\/code>metod\u0119. Laravel zapewnia r\u00f3\u017cne opcje cz\u0119stotliwo\u015bci harmonogramu, kt\u00f3re mo\u017cna znale\u017a\u0107 na stronie <a href=\"https:\/\/laravel.com\/docs\/5.7\/scheduling#schedule-frequency-options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>.<\/p>\n<h3>Dodaj wpis Cron do swojego serwera<\/h3>\n<p>Na koniec, aby ustawi\u0107 to zadanie crona na serwerze, powiniene\u015b doda\u0107 poni\u017cszy wpis crona do swojego serwera.<\/p>\n<pre><code>* * * * * cd \/path-to-your-project &amp;&amp; php artisan schedule:run &gt;&gt; \/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>Upewnij si\u0119, \u017ce poprawnie ustawi\u0142e\u015b \u015bcie\u017ck\u0119 swojego projektu. Ten Cron b\u0119dzie wywo\u0142ywa\u0142 harmonogram polece\u0144 Laravela co minut\u0119. Automatycznie wykonuje polecenie harmonogram:uruchom i ocenia zaplanowane zadania oraz uruchamia zadania, kt\u00f3re s\u0105 nale\u017cne.<\/p>\n<p>Mamy nadziej\u0119, \u017ce nauczy\u0142e\u015b si\u0119 korzysta\u0107 z harmonogramu crona w Laravel i zautomatyzowa\u0107 swoje zadania. Chcieliby\u015bmy pozna\u0107 Twoje przemy\u015blenia w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/wysylanie-wiadomosci-e-mail-przez-serwer-smtp-gmaila-w-laravel\/\" title=\"Wysy\u0142anie wiadomo\u015bci e-mail przez serwer SMTP Gmaila w Laravel\">Wysy\u0142anie wiadomo\u015bci e-mail przez serwer SMTP Gmaila w Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-uzywac-zdarzen-i-nasluchiwaczy-laravel-w-swojej-aplikacji\/\" title=\"Jak u\u017cywa\u0107 zdarze\u0144 i nas\u0142uchiwaczy Laravel w swojej aplikacji?\">Jak u\u017cywa\u0107 zdarze\u0144 i nas\u0142uchiwaczy Laravel w swojej aplikacji?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-uzywac-laravel-passport-do-uwierzytelniania-rest-api\/\" title=\"Jak u\u017cywa\u0107 Laravel Passport do uwierzytelniania REST API?\">Jak u\u017cywa\u0107 Laravel Passport do uwierzytelniania REST API?<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule przyjrzymy si\u0119 u\u017cywaniu cron scedule w Laravel do automatyzacji zada\u0144. Zadania Cron s\u0105 przydatne, aby zautomatyzowa\u0107 proces, co pozwala nam du\u017co zaoszcz\u0119dzi\u0107<\/p>\n","protected":false},"author":1,"featured_media":22224,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[501],"tags":[847],"class_list":["post-27539","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27539"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27539\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/22224"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}