{"id":24045,"date":"2021-05-11T17:02:00","date_gmt":"2021-05-11T14:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24045"},"modified":"2021-10-17T21:05:25","modified_gmt":"2021-10-17T18:05:25","slug":"laravelin-cron-schedulen-kaytto-tehtavien-automatisointiin","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/laravelin-cron-schedulen-kaytto-tehtavien-automatisointiin\/","title":{"rendered":"Laravelin Cron Schedulen k\u00e4ytt\u00f6 teht\u00e4vien automatisointiin"},"content":{"rendered":"<p>Cron-ty\u00f6 on hy\u00f6dyllinen teht\u00e4v\u00e4mme automatisoimiseksi m\u00e4\u00e4ritetyss\u00e4 ajassa s\u00e4\u00e4nn\u00f6llisin v\u00e4liajoin. Laravel toimittaa teht\u00e4v\u00e4n aikataulutuksen ominaisuuden, joka tekee cron-aikataulusta eritt\u00e4in helppoa. Aikaisemmin meid\u00e4n on lis\u00e4tt\u00e4v\u00e4 erillinen merkint\u00e4 kutakin cron-ty\u00f6t\u00e4 varten. Laravelissa meid\u00e4n on vain lis\u00e4tt\u00e4v\u00e4 yksi komento, ja se suorittaa kaikki cron-ty\u00f6t automaattisesti. Kutakin teht\u00e4v\u00e4\u00e4 varten ei tarvitse lis\u00e4t\u00e4 erillist\u00e4 merkint\u00e4\u00e4. T\u00e4ss\u00e4 artikkelissa tutkitaan cron-aikataulun k\u00e4ytt\u00f6\u00e4 Laravelissa, mik\u00e4 auttaa meit\u00e4 automatisoimaan teht\u00e4v\u00e4mme.<\/p>\n<h3>Miksi meid\u00e4n on suoritettava Cron?<\/h3>\n<p>On olemassa useita esimerkkej\u00e4, joista voimme mainita, miss\u00e4 meid\u00e4n on suoritettava cron. Sinulla voi olla verkkokauppa ja haluat l\u00e4hett\u00e4\u00e4 kampanjatarjouksia k\u00e4ytt\u00e4jillesi. Tai sinulla on j\u00e4senyyssivusto ja sinun on l\u00e4hetett\u00e4v\u00e4 muistutuss\u00e4hk\u00f6posti k\u00e4ytt\u00e4jille uusintatilausajasta. N\u00e4m\u00e4 ovat kaksi esimerkki\u00e4, joissa voimme k\u00e4ytt\u00e4\u00e4 cronia. Mit\u00e4 teemme, on kirjoittaa ohjelma, joka voi suorittaa t\u00e4m\u00e4n teht\u00e4v\u00e4n, ja asettaa sille cron. Palvelimesi etsii cronille m\u00e4\u00e4ritetty\u00e4 aikaa ja kun se saavutetaan, se suorittaa ohjelman automaattisesti. Meid\u00e4n ei tarvitse katsoa kelloa ja suorittaa ohjelmaa manuaalisesti.<\/p>\n<p>T\u00e4m\u00e4 prosessi helpottaa el\u00e4m\u00e4\u00e4mme. Voimme keskitty\u00e4 muihin t\u00e4rkeisiin juttuihimme ja sijoittaa aikaa viisaaseen asiaan.<\/p>\n<h3>Cron-aikataulu Laravelissa<\/h3>\n<p>Otetaan artikkelissamme todellinen esimerkki. Oletetaan, ett\u00e4 Laravel-tietokannassamme on joukko k\u00e4ytt\u00e4ji\u00e4. Jokaisen keskiy\u00f6n aikana meid\u00e4n on l\u00e4hetett\u00e4v\u00e4 kaikille k\u00e4ytt\u00e4jille s\u00e4hk\u00f6posti, jossa kuvataan uusi tarjouskampanjamme. T\u00e4ll\u00f6in k\u00e4ytt\u00e4jillemme ilmoitetaan uusista tarjouksista, ja myynti voi saada enemm\u00e4n huomiota.<\/p>\n<p>Oletamme, ett\u00e4 olet tallentanut kaikki k\u00e4ytt\u00e4j\u00e4tietosi k\u00e4ytt\u00e4jien taulukkoon. Saamme k\u00e4ytt\u00e4j\u00e4n s\u00e4hk\u00f6postit t\u00e4st\u00e4 taulukosta ja l\u00e4het\u00e4mme heille s\u00e4hk\u00f6postin. Tietenkin meid\u00e4n on kirjoitettava koodi tavalla, joka pit\u00e4isi suorittaa joka keskiy\u00f6.<\/p>\n<p>Avaa <code>app\/Console\/Kernel.php<\/code>tiedosto editorissa ja lis\u00e4\u00e4 tiedostoon k\u00e4ytt\u00e4j\u00e4malli ja Mail-julkisivu.<\/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>luokassa on menetelm\u00e4, <code>schedule<\/code>jossa meid\u00e4n on kirjoitettava yksi tai useampi aikataulu. Koska meid\u00e4n on l\u00e4hetett\u00e4v\u00e4 s\u00e4hk\u00f6posti k\u00e4ytt\u00e4jillemme, kirjoitamme koodin seuraavasti.<\/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>Yll\u00e4 olevassa koodissa otamme k\u00e4ytt\u00e4j\u00e4t tietokannasta ja l\u00e4het\u00e4mme heille s\u00e4hk\u00f6postin Mail-julkisivun l\u00e4hetystavalla. T\u00e4ss\u00e4 meid\u00e4n on luotava <code>mail.blade.php<\/code>tiedostot <code>resources\/views\/emails<\/code>hakemistoon.<\/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>Koska teht\u00e4v\u00e4mme on l\u00e4hett\u00e4\u00e4 s\u00e4hk\u00f6postia keskiy\u00f6ll\u00e4, k\u00e4ytimme <code>daily()<\/code>menetelm\u00e4\u00e4. Laravel tarjoaa erilaisia \u200b\u200baikataulutaajuusvaihtoehtoja, jotka saisit <a href=\"https:\/\/laravel.com\/docs\/5.7\/scheduling#schedule-frequency-options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentaatiosivulta<\/a>.<\/p>\n<h3>Lis\u00e4\u00e4 Cron-merkint\u00e4 palvelimellesi<\/h3>\n<p>Lopuksi, jotta voit asettaa t\u00e4m\u00e4n cron-ty\u00f6n palvelimelle, sinun on lis\u00e4tt\u00e4v\u00e4 cron-merkinn\u00e4n alapuolelle palvelimellesi.<\/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>Varmista, ett\u00e4 olet m\u00e4\u00e4ritt\u00e4nyt projektisi polun oikein. T\u00e4m\u00e4 Cron kutsuu Laravel-komentoajastinta joka minuutti. Se suorittaa automaattisesti aikataulun: aja komento ja arvioi ajoitetut teht\u00e4v\u00e4t ja suorittaa suoritettavat teht\u00e4v\u00e4t.<\/p>\n<p>Toivomme, ett\u00e4 olet ehk\u00e4 oppinut k\u00e4ytt\u00e4m\u00e4\u00e4n cron-aikataulua Laravelissa ja automatisoimaan teht\u00e4v\u00e4nne. Haluamme kuulla ajatuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/sahkopostin-lahettaminen-gmail-smtp-palvelimen-kautta-laravelissa\/\" title=\"S\u00e4hk\u00f6postin l\u00e4hett\u00e4minen Gmail SMTP -palvelimen kautta Laravelissa\">S\u00e4hk\u00f6postin l\u00e4hett\u00e4minen Gmail SMTP -palvelimen kautta Laravelissa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-laravel-tapahtumia-ja-kuuntelijoita-sovelluksessasi\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 Laravel-tapahtumia ja kuuntelijoita sovelluksessasi\">Kuinka k\u00e4ytt\u00e4\u00e4 Laravel-tapahtumia ja kuuntelijoita sovelluksessasi<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-laravel-passportia-rest-api-todennukseen\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 Laravel Passportia REST API -todennukseen\">Kuinka k\u00e4ytt\u00e4\u00e4 Laravel Passportia REST API -todennukseen<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa tutkitaan cron-aikataulun k\u00e4ytt\u00f6\u00e4 Laravelissa teht\u00e4viesi automatisointiin. Cron-ty\u00f6t ovat hy\u00f6dyllisi\u00e4 prosessin automaattiseksi tekemiseksi, mik\u00e4 s\u00e4\u00e4st\u00e4\u00e4 meit\u00e4 paljon<\/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":[499],"tags":[843],"class_list":["post-24045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24045"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24045\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/22224"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}