Angenommen, Sie führen einen PHP + -Datenbankserver aus, und Sie möchten ein Update bereitstellen, das das Datenbankschema und die PHP-Quellen ändert. Du machst es regelmäßig.Wie stelle ich ein Update auf deinen PHP-Server bereit, d. H. Konsistenz erhalten?
Das Problem ist, dass Ihr Dienst während des Updates kurzzeitig in einen inkonsistenten Zustand versetzt wird und die Clients dadurch zufällige Fehler bekommen. Erstens sind es die Inkonsistenzen zwischen den DB-Tabellen beim Aktualisieren des Schemas, dann die Inkonsistenzen zwischen der Datenbank und Ihrer Quelle und schließlich beim Aktualisieren der Quellen selbst: Ihre Dateien werden für sehr kurze Momente leer oder unvollständig und dann in den Modulen selbst inkonsistent. Es besteht die Möglichkeit, dass Ihre Kunden während des Updates Fehler erhalten.
Die Frage ist, was ist der beste Weg, dies zu verhindern?
Die Lösung, an die ich denke: Ersetzen Sie die Server-Stamm .htaccess
durch eine, die HTTP 503 Service unavailable
für die Dauer des Updates zurückgibt, dann legen Sie das Original zurück (ein Skript wird all dies tun). Clients können das innerhalb weniger Sekunden wiederholen, zum Beispiel bedeutet 503, dass sie innerhalb von 10 Sekunden wiederholt werden müssen, nicht mehr als dreimal.
Ein potenzielles Problem besteht darin, dass einige Anfragen bereits in Bearbeitung sind, bevor htaccess ausgetauscht wird. Sie müssen also warten, bis alle Anfragen bearbeitet sind. Am problematischsten werden lange Dateiübertragungen sein. Nehmen wir an, es dauert einige Minuten, bis eine Datei an einen Client gesendet wird. Das bedeutet, dass sich der Server für Minuten in einem Zustand 503 befindet.
Gibt es auch irgendwelche Out-of-the-Box-Lösungen speziell für PHP?