Laravel background jobs

C++ JAVA
joTunkiq
Потребител
Потребител
Posts: 826
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Thu Apr 26, 2018 9:49 am

Никога не съм настройвал крон на лолания хост, но намерих статия и изглежда че може : https://stackoverflow.com/questions/174 ... dows-xampp

В твоя случай крон задачата ще ти е :

Code: Select all

* * * * * C:\xampp\php\php.exe  C:\xampp\htdocs\Game/artisan schedule:run >> /dev/null 2>&1     

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Apr 26, 2018 10:04 am

/dev/null не съществува на windows. Това го оправих но резултата е същия. Изпълнява се само един път.

joTunkiq
Потребител
Потребител
Posts: 826
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Thu Apr 26, 2018 10:28 am

Нещо не си го настроил :)

Пробвай на някой хостинг и ще тръгне. Това да нагласяш крон задачи на xампп под windows е ад.
/dev/null не съществува на windows. Това го оправих но резултата е същия. Изпълнява се само един път.
Това е идеята да аутптва към несъществуващ път, защото 99% от времето няма да ти трябва какво аутпутва командата, особено всяка минута :)

ЕДИТ: гледай за какъв хак се сетих за да емулираш крон ..

правиш един бач файл и го рънваш да си изпълява командата.. :D

Code: Select all

:loop
    C:\xampp\php\php.exe  C:\xampp\htdocs\Game/artisan schedule:run >> /dev/null 2>&1     
timeout /t 1 
goto loop
Сигурен съм че някой може да излисли доста по-добро решение, просто сега за това се сетих. Може би някой по-запознат с nginx би казал дали там не е по-лесно да се настрои крон. :?:

Абе кофти работа си е да си играеш с крон и xампп под windows :/ Както казах ориентирай се към някой хост. :?:

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Thu Apr 26, 2018 11:57 am

За такива неща се пуска един Docker или Vagrant с линукски сървър и се настройват там нещата.

Иначе под Windows няма cron jobs. Не и това, което е на линукс.

Под Windows може да се пробва следното(не съм го тествал).

1. Добави си php.exe в Environment Variables, за да можеш да викаш в кознолата само "php" вместо целия път.

2. Пробвай следното
schtasks /create /sc minute /mo 1 /tn "Laravel Scheduler" /tr "php C:\xampp\htdocs\Game\artisan schedule:run > NUL"

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Apr 26, 2018 12:16 pm

Изписа ми това съобщение. Също примигва някакво прозорче от време на време, обаче в базата нямам промяна, а трябва да инкрементира.

SUCCESS: The scheduled task "Laravel Scheduler" has successfully been created.

И как да го спра сега?

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Thu Apr 26, 2018 12:38 pm

Това прозорче е php.exe прозореца, който се рънва всяка минута от Task Scheduler-a.

Спирането става така:
schtasks /end /tn "Laravel Scheduler"
Колкото до записването. Я да видя командата update:resources, която си направил.

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Apr 26, 2018 12:45 pm

Спрях я но прозорчето продължава да изскача?

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Thu Apr 26, 2018 12:53 pm

Тогава опитай направо да го изтриеш:
schtasks /delete /tn "Laravel Scheduler"

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Thu Apr 26, 2018 12:59 pm

Revelation wrote:Колкото до записването. Я да видя командата update:resources, която си направил.
[php]
<?php

namespace App\Console\Commands;

use App\Resource;
use Illuminate\Console\Command;

class UpdateResources extends Command
{
protected $signature = 'update:resources';

protected $description = 'Update resources in database.';

public function __construct()
{
parent::__construct();
}

public function handle()
{
\DB::table('resources')
->where('user_id', 1)
->increment('gold', 5);
}
}
[/php]

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 867
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Thu Apr 26, 2018 1:13 pm

А командата регистрира ли е в пропъртито $commands?

Добави Kernel.php:

[php]
protected $commands = [
UpdateResources::class
];
[/php]

Post Reply