Как запустить метод Artisan::call() через Ajax в режиме обслуживания в Laravel 12Php

Кемеровские программисты php общаются здесь
Anonymous
Как запустить метод Artisan::call() через Ajax в режиме обслуживания в Laravel 12

Сообщение Anonymous »

Я обновил приложение Lravel 10 до последней версии Laravel 12.36.1.
В приложении Laravel 10 у меня есть вызов Ajax в бэк-офисе, чтобы перевести проект вниз или вверх, который вызывает метод setMaintenanceMode(string $mode), например:

Код: Выделить всё

use Artisan;
use Str;

class MaintenanceService {

public function setMaintenanceMode(string $mode): array
{
if($mode == 'down') {
Artisan::call('down', [
'--render' => 'errors.maintenance',
'--secret' => config('app.maintenance.secret'),
'--retry'  => config('app.maintenance.app_downtime_seconds', 600),
]);
session()->put('maintenance_mode', true);
}
if($mode == 'up') {
Artisan::call('up');
session()->forget('maintenance_mode');
}

$mode_new = $mode == 'down' ? 'up' : 'down';

$data = [
'command'           => $mode,
'command_name'      => ucfirst($mode),
'command_name_slug' => Str::slug($mode),
'last_run'          => now(),
'run_mode'          => 'manual',
'run_result'        => 1,
];

return [
'message'  => session()->has('maintenance_mode') ? 'Site is down' : 'Site is up',
'mode'     => $mode,
'new_mode' => $mode_new,
'class'    => session()->has('maintenance_mode') ? 'danger' : 'success',
];
}
}
Даже в режиме обслуживания файл down, установленный Laravel, можно удалить при вызове метода setMaintenanceMode(string $mode), поскольку значение передается $mode="up".
В Laravel 10 это работает, но в Laravel 12 при использовании того же метода, что и выше, и попытке поднять проект вверх, передав значение как $mode="up" выдает ошибку 503, а вызов Ajax возвращает ее как 503.
Мой вопрос: есть ли способ переопределить режим обслуживания при вызове Artisan::call() в режиме обслуживания и получить статус 200 ok?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -laravel-1

Вернуться в «Php»