Prozess im Controller starten ohne Response-Zeit zu verlängern
Hallo liebes Forum,
da mir hier mal ans Herz gelegt wurde, auch mal nachzufragen, wenn man sich bei der Umsetzung eines Vorhabens nicht sicher ist, wollte ich genau dies mal tun.
Folgendes Problem habe ich gerade.
Ich habe ein Bundle, welches über einen Cronjob (oder auch ein Command) mehrere asynchrone API-Requests an eine Google API versendet, die im Schnitt zwischen 30-60 Sekunden benötigen.
Da dies beim Aufruf eines Controllers zu lange dauert, lasse ich im Cronjob/Command eine Cache-Item erzeugen, welches die Responses beinhaltet.
Soweit so gut und auch funktionell.
Im Controller prüfe ich dann, ob das Cache-Item vorhanden ist: Bei Fehlkonfiguration gebe ich eine Fehlermeldung aus, bei vorhandenem Item, gebe ich die Responses aus, aber wenn das Cache-Item gerade nicht vorhanden ist, gebe ich einen Text aus, der sagt, dass die Requests gerade generiert werden und der Benutzer noch warten muss.
Nun ist mein Problem, dass ich keine Möglichkeit habe, zu prüfen, ob dieses Cache-Item gerade durch meinen Cronjob/mein Command generiert wird oder einfach so nicht vorhanden ist.
Gibt es an dieser Stelle eine Möglichkeit zu prüfen, ob das Command/Der Cronjob oder deren Funktionalität gerade laufen bzw. das Cache-Item gerade generiert wird?
Als zweite Möglichkeit habe ich versucht das Command bzw. den zugehörigen Service im Controller aufzufrufen, falls das Cache-Item nicht vorhanden ist, aber dann dauert die Response sehr lange.
Gibt es hier vielleicht eine Möglichkeit den Service quasi im Hintergrund zu triggern und dem Benutzer dennoch eine Response auszugeben, ohne dass dieser so lange warten muss, bis der Service abgeschlossen ist?
Bei Symfony habe ich dazu den Process-Component gefunden, aber mit diesem habe ich es noch nicht hinbekommen, mein Command zum Laufen zu bekommen (https://symfony.com/doc/current/components/process.html)
Bin für alle Inputs an dieser Stelle dankbar :)