Ich schreibe eine App auf Silex in Übereinstimmung mit der Dokumentation, aber mit einigen Ergänzungen. Ich erkläre die Route, nach Middleware für Route und Middleware für App beenden.Wie kann man silex "finish" Middleware korrekt verwenden, um schwere Vorgänge im Hintergrund zu verarbeiten?
Der obige Code funktioniert, wie ich brauche: Antwort wird gesendet, Browser Spinner wird gestoppt, schwere Operation wird im Hintergrund verarbeitet. Aber es gibt eine offene Frage: Ist es notwendig, Header in die Antwort nach Middleware und Flush Buffer in fertig Middleware hinzufügen? Ohne diese Manipulationen wird die Serverantwort erst nach Abschluss des Fertigstellungs-Middleware-Handlers empfangen.
Würden Sie bitte bitte mehr Licht auf diese Fragen und Antworten werfen, da ich genau das gleiche bin. Es wäre hilfreich, wenn Sie sich etwas Zeit nehmen könnten, um Ihrer Frage weitere Erklärungen hinzuzufügen und eine ausführlichere Antwort zu geben. Tnx im Voraus. Zum Beispiel, wie könnten Sie feststellen, was die Quelldaten für die PDF sind, wie Abschluss auf allen Routen ausgelöst wird – Trix
@Trix Wenn ich Sie richtig verstehe, müssen Sie den Browser über eine neue PDF-Datei informieren. Zu diesem Zweck können Sie WebSocket verwenden. Auf diese Weise müssen Sie das Ergebnis des Finish-Middleware-Handlers nicht direkt überwachen. – IvanMalenko
@Trix Meine Aufgabe war wie folgt: Benutzereingaben speichern, PDF-Berichte basierend darauf erstellen und einen Brief mit diesem Bericht senden. Nach der Verarbeitung der Benutzereingaben sende ich eine Antwort an den Browser und schließe die Verbindung ("nach" -Abschnitt). Im Abschnitt "finish" bearbeite ich $ response object, generiere eine Datei und sende einen Brief (hier keine Benachrichtigungen an den Browser). – IvanMalenko