WordPress や owncloud をはじめ、PHP アプリケーションの中には自分自身のアップデート機能を持つものがあります。そういった機能を実装する際にいくつか気になる点があります。
更新データは zip ファイルにして配信用のサーバーに置いてあるものとします。zip ファイルには変更箇所の差分ファイルと、インストールスクリプトとなる php ファイルを入れておき、一時フォルダに展開後、インストールスクリプトを実行することで差分の新しいファイルで上書きすれば実現できるように思えます。
何事もなければこれでいいのですが、アップデート時にタイムアウトやメモリ不足、パーミッション不足などの理由でインストールが中断された時に、ロールバックする仕組みが必須になってくると思います。
ファイルを上書きする前に元データを example_backup.php のように同じフォルダにリネームしておき、正常に完了したら古いファイルを削除するというのも考えましたが、ロールバックする際に異常終了ロールバック用のスクリプトを実行できなければバックアップファイルだらけのままになってしまいます。同じような機能を持つ他のアプリケーションで異常終了してもそのような状態になっているのは見かけません。
このようにサイトの管理画面などからサイトアプリケーション自体の構成ファイルをアップデートする際、異常終了しても以前の状態に復帰できるようにするにはどのような手順でアップデートするのでしょうか?
あなたの回答
tips
プレビュー