Wpis z mikrobloga

Nie ma jak to frameworki, więc mam problem z #symfony, a dokładniej z Symfony 4.4 i tworzeniem własnych komend.
Stworzyłem sobie pewną bardzo rozbudowaną komendę w symfony, która tworzy sub-domenę w VestaCP, kopiuje plik i instaluje pewną aplikację. Czas wykonywania tego nie jest krótki, ale wywołanie komendy za pomocą konsoli nie zwraca żadnego błędu, wszystko wykonuje się poprawnie i działa.
No, ale wykonanie komendy przez stronę, (użytkownika strony) za pomocą:


$process = new Process(['php', 'bin/console', 'komenda', parametr1, parametr2]);
$process->setWorkingDirectory("/home/admin/web/domena.pl/public_html/");
$process->setTimeout(3600);
$process->run();

wywala error 500 i błąd w VestaCP.
Wykona tylko pierwsze zadanie, z komendy, czyli stworzenie sub-domeny i tyle, ale nie wykona już kopiowania pliku.

AH01067: Failed to read FastCGI header, referer: (strona)
(104)Connection reset by peer: [client 91.234.12.234:52244] AH01075: Error dispatching request to (strona)

Wiem, że chodzi o przekroczenie pewno czasu limitu wykonywania się skryptu, lecz limity poustawiałem lub je powyłączałem w VestaCP, a dalej nie działa tak jak ma.

W sumie jak to zlecić, aby komenda wykonywała się w tle w symfony?
Strona normalnie wyświetli się, a komenda będzie działać sobie i skończy swoje działanie i wtedy najwyżej wyśle jakieś powiadomienie o skończonej pracy?

#programowanie #programista15k #php
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nophp:
- kolejka zadań
- wykonanie asynchroniczne w backendzie
- powiadomienie via web socket, albo push, albo long polling, albo cokolwiek co pasuje do ogółu twojej aplikacji.
  • Odpowiedz
@zielonka18: No dzięki. Szkoda tylko, że symfony nie zgłasza żadnego błędu. No i szkoda, że Process w symfony nie działa w tle, a w sumie nawet dziwne. Jeśli chcesz coś wywołać za pomocą komendy to jest to logiczne chyba, że może trwać to dłużej niż parę sekund. Już mam zrobione kolejkowanie. Teraz tylko przetestować.
  • Odpowiedz