Zadanie batchowe laravel

Zadanie batchowe laravel
Dominik Kopaczek
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:5
0

Dzień dobry wszystkim,

Mam problem z odpaleniem zadań cyklicznych w Laravel. Już tłumaczę co mam i gdzie utknąłem.

Mam utworzoną nową klase cronEmail i nową komende notify:email

Kopiuj
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use Mail;
// use Illuminate\Http\Request;
// use App\Http\Controllers\Controller;

class cronEmail extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'notify:email';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send email to Administrator';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        error_log('Test wywolania zadania BATCHOWEGO');
       
    }
}

Jest ona normalnie widoczna przez system:

screenshot-20180603112653.png

Dodatkowo to ręcznym przetestowaniu działa bez problemu:

screenshot-20180603112809.png

Następnie dodałem wywołanie tej komendy w Kernel.php:

Kopiuj

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        'App\Console\Commands\cronEmail',
        // Commands\cronEmail::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        //TEST
        $schedule->command('notify:email')
                 ->everyMinute();
                 
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}


Następnym krokiem jest odpalenie schedule, aby komenda zawarta w Kernel.php wykonywała się cyklicznie co minutę (akurat w tym teście).

Z dokumentacji laravel:

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

I właśnie tu pojawia się problem. Nie mogę wpisać poprawnej PathToArtisan

próbuję między innymi w ten sposób:

screenshot-20180603113243.png

Ale tak jak widać z marnym skutkiem. Próbowałem bardzo wiele kombinacji - nie ma sensu żebym teraz je wypisywał.

Aczkolwiek, znalazłem w internecie że przy pomocy polecenia crontab -e powinienem dostać w odpowiedzi właśnie potrzebną mi PathToArtisan. Niestety konsola tego nie rozpoznaje.

screenshot-20180603113729.png

Czy ktoś jest w stanie w jakiś sposób pomóc? Odnaleźć PathToArtisan? Albo może ktoś zna jakieś polecenie za pomocą którego można to znaleźć?
Paróbowałem również użyć env :

screenshot-20180603113957.png

Ale z tym PATH jest chyba coś nie tak(za długi)? Chyba że powinienem wybrać część z niego? Próbowałem z całoscią ale nie działa.

Będę niezmiernie wdzięczny za pomoc!

Jeżeli mój post nie jest zgodny z normami na tym forum - proszę o wybaczenie - jest to mój pierwszy post :)

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

z tego co widzę u mnie działa
* * * * * php /var/www/html/katalog_projektu/artisan schedule:run >> /dev/null 2>&1

//edit
dlaczego masz /C/ ? powinno być C:/


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
Dominik Kopaczek
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:5
0

Właśnie u mnie jest chyba coś nie tak. Co do poleceń próbowałem na prawdę różne. Te jak widać też nie działają:

screenshot-20180603131156.png

A powiedz mi proszę, jaka jest dokładnie lokalizacja Twojego projektu skoro masz ścieżkę /var/www/html/katalog_projektu ?

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
1

bo to ścieżka linuxowa co podałem, na windowsie nie odpalałem tego nigdy


It's All About the Game.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

crontab jest poleceniem linuksowym, jak i zresztą cała podana linia komend (patrz: >> /dev/null - przecież tego na Windowsie nie ma).
Dlaczego kopiujesz polecenia z internetu bez ich zrozumienia? Kiedyś rozwalisz sobie czymś takim system.


edytowany 2x, ostatnio: Patryk27
Dominik Kopaczek
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:5
0

Aaaa scieżka linuksowa - rozumiem.

A co do crontab - dzięki za odpowiedź. W końcu wiem dlaczego nie działa. Czyli mój PathToArtisan w Windows to będzie:

C:\Users\Dom\tasker-katalog\tasker - w tym miejscu jest główny folder projektu i również znajduję się tutaj między innymi plik artisan.

Więc ścieżka jest raczej poprawna, dobrze mówię?

screenshot-20180603134721.png

Tylko pytanie dlaczego wciąż nie chce mi zaakceptować tego?

Ktoś ma jakiś pomysł?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

php /C:/Users/... - co tu robi slash na początku?


Dominik Kopaczek
Próbowałem również bez - ale bez skutku. Pomogła natomiast poprawka końcówki zapytania.
JD
  • Rejestracja:około 19 lat
  • Ostatnio:3 dni
1
edytowany 1x, ostatnio: john_doe
Dominik Kopaczek
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:5
0

Panowie - dobra robota!!! Jakiś postęp mamy. Spójrzcie proszę na to:

screenshot-20180604014745.png

Nie ma błędu! Oraz schedule się odpaliło, ponieważ zadanie określone w danej komendzie się wykonało tylko pytanie dlaczego tylko raz ?

Kod z Kernel.php wygląda natępująco:

Kopiuj

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        'App\Console\Commands\cronEmail',
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        
        $schedule->command('notify:email')->everyMinute();
                 

    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}


Jak widać w kodzie powyżej komenda norify:email powinna się wykonywać co minutę.

$schedule->command('notify:email')->everyMinute();

Macie jakieś pomysły?

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Laravelowy scheduler działa tak, że to polecenie (z tym php artisan ...) powinno być uruchamiane co minutę (dlatego też umieszcza się to w crontabie), aby wszystko działało poprawnie.

Innymi słowy: pojedyncze odpalanie tego polecenia uruchamia tylko harmonogramy przypisane do danej minuty i się kończy.


Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)