web-dev-qa-db-ja.com

オフラインで動作するphpmysqlアプリケーションを構築する方法

MySQLデータベースにデータをオンラインで保存するWebアプリケーションがあります。また、PHPコードを使用してデータを取得し、サーバー上で計算を実行して、結果をユーザーに送り返します。

データは非常に単純です。名前、説明、価格、VAT、データベースから読み取られてサーバー側で操作される1時間あたりの料金です。

多くの場合、クライアントはインターネット接続が不十分または利用できない環境で作業します。この場合、クライアントがオフラインで作業できるようにしたいと思います。新しい名前、説明、価格を入力し、最後のVATを使用して計算を実行します。次に、接続が利用可能になり次第、すべてのデータを同期します。

今問題は、これを達成するための最良の方法や技術が何であるかがわからないことです。心配しないでください、私は私のためにコードを書くことを求めていません。そのようなシステムを構築する正しい方法は何ですか?

オンラインのMySQLとPHPコードをローカルで使用する簡単な方法はありますか?

必要なデータをローカルファイルに保存し、JavaScriptで計算を再構築し、ローカルで実行してから、データベースが利用可能な場合はデータを同期する必要があります。

ローカルとオンラインの2つのMySQLデータベースを使用し、データが利用可能なときに2つの間で同期を行う必要がありますか?はいの場合、この操作を実行するためにどのテクノロジー(言語)を使用しますか?

可能であれば、過去に同様のプロジェクトに携わったPHPコーダーからの回答をお願いします。使用するフレームワークの構造とテクノロジーに関する詳細情報を教えてください。私は、初めてのことです。このようなアプリケーションの書き方です。私が6歳か愚かであるかのように、数分時間を割いてすべてを説明していただければ幸いです(私はそうです!)

私は本当にどんな助けと提案にも感謝します。

チャオ、

ドナト

11
user1536396

基本的に3つの方法があります。

バージョン1:「オールドスクール」:PHP-Gtk +およびbcompiler

  • まず、まだ行っていない場合は、ビジネスロジックをプレゼンテーション層(HTML、テンプレートエンジンなど)およびデータベース層から分離する必要があります。
  • 次に、データベースレイヤーを調整して、代替DB(ローカルSQliteが頭に浮かぶ)と共存し、オンライン時に再び同期を実行できるようにします。
  • 最後に、PHP-Gtk +を使用して新しいUIを作成し、これらすべてをbcompilerでパックします

バージョン2:「標準」:サーバーを持ち運びます

  • Server2Go、WampOnCD、およびその仲間を見て、「ダブルクリック可能なWebサーバー」を作成します(開始点 Z-WAMP
  • バージョン1と同様にDBレイヤーを適応させる必要があります

バージョン3:「Web2.x」:アプリケーションをサーバーからブラウザーに移動します

  • アプリケーションロジックをサーバー側(PHP)からクライアント側(JS)に移動します
  • サーバー部分(PHP)をデータアクセスまたは同期レイヤーのみにする
  • HTML5オフライン機能を使用して、オフラインの場合はデータアクセスをローカルデータに置き換え、オンラインの場合は再同期します

どれが最適ですか?

これはあなたが持っているものとあなたが望むものに依存します。ビジネスロジックのほとんどがPHPである場合、それをブラウザに移動すると、法外に費用がかかる可能性があります。これにより、まったく新しいクラスのセキュリティナイトマーが生成されることに注意してください。私は個人的にこの方法でportingをお勧めしませんが、バッキングDBが大きすぎない場合は、新しいアプリにはお勧めします。

PHPビジネスロジックを維持することを選択した場合、1と2の間の乾燥は、多くの場合、アプリのUIの量の問題になります。CRUDフォームが少ない場合は、1。良い考えです-それは間違いなく最もポータブルです(あなたと一緒に持っていくという意味で)。そうでない場合は、2を使用してください。

13
Eugen Rieck

HTML5の アプリケーションキャッシュ を見てください。それがほとんどの目的です。 たっぷりoftutorials がありますので、周りを見て、ニーズに合っているかどうかを確認してください。

2
Ben D

私は船のために同様のシステムで働いてきました。インターネットは海の真ん中で高価であるため、電子メールを介したデータベース同期を備えたローカルWebサーバーがインストールされています。

また、経験のない人でもシステムをインストールしたり、システムを更新したりできるように、簡単な.exeパッケージを作成しました...

1
Juris Malinens