29

デスクトップアプリケーションが自己更新することは、現在ではかなり標準的な方法です。Mac では、私の著書でSparkleを使用する Apple 以外のすべてのプログラムが即座に勝利します。Windows 開発者の場合、これについてはすでに詳しく説明されています。自己更新 Web アプリケーションに関する情報はまだ見つかりません。お役に立てば幸いです。

Wordpress や Drupal のようにインストールすることを意図した Web アプリケーションを構築しています。ディレクトリに解凍し、インストール ページにアクセスすれば、準備完了です。広範なサーバー互換性を確保するために、PHP と MySQL を使用するように依頼されました。それは **MP ですか? いずれにせよ、それは広くクロスプラットフォームでなければなりません。文脈上、これは基本的に中小企業向けの統合された Web メッセージング アプリケーションです。これは別の CMS プラットフォームではありません。ウェブメールを考えてみてください。

自己更新 Web アプリケーションについて知りたいです。まず、(1)これは悪い考えですか?Wordpress 2.7 の時点で、自動更新は 1 つのボタンで簡単に実行できるように見えますが、これがひどく、ひどく間違った方向に進む可能性があることは非常に多く想像できます。また、Web ファイルが Web プロセスによって書き込み可能であるという考えは、セキュリティ ホールではありませんか?

(2) 開発時間の価値はありますか? 世界にはおそらく何百万もの WP がインストールされているため、WP チームが簡単にインストールできるようにするために費やした時間に見合うだけの価値があり、世界中で何百万もの工数を節約できます。自分のソフトウェアが数千インストールされることしか想像できません -- 自己アップグレードを構築することは時間の投資に見合う価値があるのでしょうか? それとも、ユーザーが最初から Web ソフトウェアをダウンロードしてインストールするのに十分なほど洗練されていると仮定して、アップグレード チェックリストを実行できるのでしょうか?

それがセキュリティ災害や時間の無駄でなければ、(3) 以前にそれを行ったことがある人からの提案を探しています。データベースにバージョン テーブルを保持していますか? DB のアップグレードをどのように管理していますか? 自己更新 Web アプリケーションのコンテキストで部分的なアップグレードをロールバックするためにどの方法を使用しますか? ORM レイヤーを使用すると、簡単になりましたか、それとも難しくなりましたか? バージョン変更のデルタを保持しますか、それとも毎回すべてを吹き飛ばしますか?

これについてのあなたの考えに感謝します。

4

7 に答える 7

13

率直に言って、それはユーザーベースに大きく依存します。自動的にアップグレードされない PHP アプリケーションはたくさんあります。彼らのユーザーは、アップグレード プロセスを処理するのに十分な技術を持っているか、単にアップグレードしないかのどちらかです。

私は2つのステップを意図しています:

1) ユーザーが本当に必要としているものは何かを真剣に自問してください。自己更新は、追加の作業を正当化するのに十分な採用促進を提供しますか? 答えが「はい」であると確信している場合は、それを実行してください。

あなたがここで質問しているので、あなたはまだ知らないと思います。その場合、ステップ 2 を使用します。

2) 機能なしでバージョン 1.0 をリリースします。ユーザーのフィードバックを待ちます。ユーザーは、より簡単なアップグレード プロセスをすぐに求めるかもしれません。その場合は、それを優先する必要があります。あるいは、ユーザーが他の機能に関心を持っていることに気付くかもしれません。

ユーザーに尋ねることなくユーザーが何を望んでいるのかを推測することは、ユーザーが実際には必要としないものに多くの開発時間を浪費する良い方法です。

于 2009-04-07T01:23:15.053 に答える
4

私は最近、データベーススキーマの変更に関してこれについて考えています。現在、WordPressを掘り下げて、リビジョン間のデータベースの変更をどのように処理しているかを確認しています。これが私がこれまでに見つけたものです:

$wp_db_versionからロードされwp-includes/version.phpます。この変数はSubversionリビジョン番号に対応し、wp-admin/includes/schema.php変更されると更新されます。(おそらくフックを介して?わかりません。)wp-admin/admin.phpがロードされると、指定されたWordPressオプションdb_versionがデータベースから読み取られます。この数がに等しくない場合$wp_db_versionwp-admin/upgrade.phpがロードされます。

wp-admin/includes/upgrade.phpと呼ばれる関数が含まれていますdbDelta()dbDelta()スキャン$wp_queries(最新のデータベーススキーマを最初から作成する一連のSQLクエリ)をスキャンしてデータベース内のスキーマと比較し、スキーマが最新になるように必要に応じてテーブルを変更します。

upgrade.php次に、がターゲット値よりも小さい場合にupgrade_all()特定のupgrade_NNN()関数を実行するという関数を実行します。$wp_db_version(つまりupgrade_250()、データベースのバージョンが7499未満の場合、WordPress 2.5.0アップグレードが実行されます。)これらの各関数は、独自のデータ移行および作成手順を実行します。これらの手順の一部は、データベースの初期セットアップスクリプト中に呼び出されます。重複コードをうまく削減します。

だから、それはそれを行うための1つの方法です。

于 2009-04-07T17:49:47.677 に答える
4

はい、PHPがインターネット上のどこかから警告なしにファイルを上書きした場合、それはセキュリティ機能になります。サーバーが更新サーバーに正しく接続されているという保証はありません( DNS ポイズニングが発生した場合、他の誰かが作成したコードをダウンロードする可能性があります) - 他の誰かがクライアントのデータにアクセスできるようになります。したがって、デジタル署名が重要になります。

ユーザーは、PHP がファイルへの読み取りアクセスのみを持つように Web ディレクトリにアクセス許可を設定することで、更新を制御できます。この手順は、プログラムで簡単に文書化できます。

1 つの質問が残っています (答えは本当にわかりません): 現在ファイルを使用している場合、PHP はファイルを上書きできますか (たとえば、update.php ファイル自体を更新する必要がある場合)? テストする価値があります。

于 2012-05-23T10:26:00.700 に答える
3

アプリケーションをpearでパッケージ化し、 channelを設定することをお勧めします。その後、ユーザーは標準インターフェース (pear) を介してアプリケーションをアップグレードできます。これは完全に自動化されているわけではありませんが (ユーザーが pear 上で何らかの自動化を実行している場合を除きます)、標準であるため、どのシステム管理者でも維持できます。

于 2009-04-07T08:24:10.487 に答える
3

すでにこれを除外していると思いますが、サービスとしてホストできます。(wordpress.com を考えてみてください)

于 2009-04-07T01:25:28.310 に答える
1

ほんの 2 セント: CMS 内の自動的に自己更新するアプリケーションをセキュリティ ホールと見なすので、この機能をコーディングする場合は、この動作のさまざまなレベルを実装することを検討する必要があります。

  • 自動更新
  • 更新を確認して通知する
  • 無効にする
于 2009-04-07T10:44:40.697 に答える