Laravel 8: Schedule на 1 сървър

C++ JAVA
Post Reply
User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3388
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Laravel 8: Schedule на 1 сървър

Post by dakata__92 » Mon May 10, 2021 1:51 pm

Колеги имам няколко синхронни сървъра. Съответно имам на всичките стартиран крон

Code: Select all

* * * * * php73 /laravel/artisan schedule:run > /dev/null 2>&1
Файловете се синхроницират на всички машини, съответно всяка машина изпълнява експорт командата. Идеята ми е да огранича командата за част от сървърите - не за всичките. Как да го направя?

Code: Select all

protected function schedule(Schedule $schedule)
{
	$server = new Server;
	$ip = '1.0.0.10';
	if ($server->isSetIP($ip) && $_SERVER['SERVER_ADDR'] == $ip) {
		$schedule->command('export')->everyMinute()->withoutOverlapping()->runInBackground();
	}
}
$server->isSetIP($ip) - взима от масив наличните машини и проверява дали има такова IPв масива.
$_SERVER['SERVER_ADDR'] - трещи грешка, че не е сетнат.
Пробвах с request()->server('SERVER_ADDR') - но нещо не сработва като хората.

Как мога в artisan scheduele list да извадя само за този сървър на който се намирам кроновете? Идеята ми е ако в schedule съм подал командата да се изпълнява само когато ip-то на сървъра е равно на него (тоест съм на съответния за ип сървър). Проблема е че тази логика не сработва.
by Revelation » Mon May 10, 2021 5:29 pm
Просто спри крон задачата на съответния сървър. Защо всичко вършиш чрез код?
Go to full post

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

Re: Laravel 8: Schedule на 1 сървър

Post by Revelation » Mon May 10, 2021 5:29 pm

Просто спри крон задачата на съответния сървър. Защо всичко вършиш чрез код?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3388
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Schedule на 1 сървър

Post by dakata__92 » Tue May 11, 2021 6:19 am

Revelation wrote:
Mon May 10, 2021 5:29 pm
Просто спри крон задачата на съответния сървър. Защо всичко вършиш чрез код?
Говорим за синхронни сървъри. Ако обновя Кернела, той се синхронизира с всички машини, съответно на всяка една отделна машина се стартират всички процеси в schedule. Идеята ми, е че не всички задачи трябва да се стартират на всички машини. Искам, като синхронизирам файла на един от сървърите да визам IP - то на сървъра и в метода да проверявам ако е въпросният сървър имам ли за него специфични задачи или не.

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

Re: Laravel 8: Schedule на 1 сървър

Post by Revelation » Tue May 11, 2021 3:37 pm

Виж дали можеш да използваш hostname-а на сървъра. Поне знаеш, че всеки сървър има hostname и предполагам сте ги именували подобаващо, за да ги разграничавате.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3388
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Schedule на 1 сървър

Post by dakata__92 » Wed May 12, 2021 9:18 am

Revelation wrote:
Tue May 11, 2021 3:37 pm
Виж дали можеш да използваш hostname-а на сървъра. Поне знаеш, че всеки сървър има hostname и предполагам сте ги именували подобаващо, за да ги разграничавате.
Предполагам, че това ще е добро решение?

Code: Select all

$this->hostname = gethostname();
$this->serverIp = gethostbyname($this->hostname);

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

Re: Laravel 8: Schedule на 1 сървър

Post by Revelation » Wed May 12, 2021 4:15 pm

Нужен ли ти е IP адреса въобще? Ако не ти трябва за друго и ръчно правиш списъка, можеш да работиш само с hostname-а. IP адреса е по-вероятно да се смени (по принцип не би трябвало дори ако се наложи местене на друга машина), отколкото hostname-а.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3388
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 128

Re: Laravel 8: Schedule на 1 сървър

Post by dakata__92 » Thu May 13, 2021 8:04 am

Revelation wrote:
Wed May 12, 2021 4:15 pm
Нужен ли ти е IP адреса въобще? Ако не ти трябва за друго и ръчно правиш списъка, можеш да работиш само с hostname-а. IP адреса е по-вероятно да се смени (по принцип не би трябвало дори ако се наложи местене на друга машина), отколкото hostname-а.
ИП адреса ми е необходим. Имам глобална конфигурация от която се управляват активните машини. Съответно ако го направя така спокойно мога да управлявам глобално крон задачите с активните машини, и съответно ако нещо не е наред да спра и прехвърля задачите на друга машина.

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

Re: Laravel 8: Schedule на 1 сървър

Post by Revelation » Thu May 13, 2021 11:03 am

В такъв случай имплементацията няма значение, стига да работи.

Post Reply