2012-09-04 31 views
10

Tôi có một ứng dụng web lưu trữ dữ liệu trong cơ sở dữ liệu MySQL trực tuyến. Nó cũng lấy dữ liệu bằng cách sử dụng mã PHP, thực hiện các phép tính trên máy chủ và gửi kết quả lại cho người dùng.cách tạo ứng dụng mysql php hoạt động ngoại tuyến

Dữ liệu khá đơn giản: tên, mô tả, giá, VAT, phí theo giờ được đọc từ cơ sở dữ liệu và thao tác ở phía máy chủ.

Thường thì ứng dụng khách hoạt động trong môi trường kết nối internet kém hoặc không khả dụng. Trong trường hợp này, tôi muốn khách hàng có thể làm việc ngoại tuyến: nhập tên, mô tả, giá mới và sử dụng VAT cuối cùng để thực hiện các phép tính. Sau đó, đồng bộ hóa tất cả dữ liệu ngay khi có kết nối.

Bây giờ vấn đề là tôi không biết cách tốt nhất hoặc công nghệ để đạt được điều này là gì. Đừng lo lắng, tôi không yêu cầu viết mã cho tôi. Bạn có thể giải thích cho tôi cách chính xác để xây dựng một hệ thống như vậy không?

Có cách nào đơn giản để sử dụng mã MySQL và PHP trực tuyến của tôi không?

Tôi có nên lưu dữ liệu tôi cần trong tệp cục bộ, xây dựng lại phép tính trong JavaScript, thực hiện chúng cục bộ và sau đó đồng bộ hóa dữ liệu nếu cơ sở dữ liệu có sẵn.

Tôi có nên sử dụng hai cơ sở dữ liệu MySQL, một địa phương và một trực tuyến và thực hiện đồng bộ hóa giữa hai khi dữ liệu có sẵn không? Nếu có, tôi sẽ sử dụng công nghệ nào (ngôn ngữ) để thực hiện thao tác này?

Nếu có thể, tôi muốn có câu trả lời từ các lập trình viên PHP đã làm việc trên một dự án tương tự trong quá khứ và có thể cung cấp cho tôi thông tin chi tiết về cấu trúc khung và công nghệ sử dụng. hãy nhớ rằng tôi mới sử dụng cách viết đơn này và tôi sẽ đánh giá cao nếu bạn có thể dành vài phút và giải thích mọi thứ cho tôi như tôi sáu tuổi hay ngu ngốc (mà tôi là!)

Tôi thực sự đánh giá cao bất kỳ giúp đỡ và gợi ý.

Ciao,

Donato

+0

Tôi đề nghị tái gắn thẻ câu hỏi của bạn - nếu bạn muốn điều này được dựa trên trình duyệt nó chắc chắn sẽ sử dụng javascript, công nghệ phía máy chủ (ví dụ PHP, mysql vv) là không thực sự liên quan, thích hợp. Nếu bạn không bị giới hạn nghiêm ngặt đối với một trình duyệt web, bạn có thể muốn xem xét CouchDB (http://couchdb.apache.org/) hoặc tương tự - đó là một cơ sở dữ liệu tài liệu được thiết kế để sử dụng ngoại tuyến & tái đồng bộ. –

Trả lời

12

Có cơ bản 3 cách để đi:

Phiên bản 1: "Old trường ": PHP-Gtk + và bcompiler

  • đầu tiên, nếu bạn không làm như vậy, bạn cần phải tách biệt logic kinh doanh của bạn từ lớp trình bày của bạn (HTML, công cụ khuôn mẫu, ...) và lớp cơ sở dữ liệu
  • sau đó điều chỉnh lớp cơ sở dữ liệu của bạn để có thể sống với DB thay thế (SQLite cục bộ) và thực hiện đồng bộ hóa khi trực tuyến trở lại
  • Cuối cùng sử dụng PHP-Gtk + để tạo giao diện người dùng và gói mới tất cả điều này với bcompiler

Version 2: "chuẩn": Đi máy chủ của bạn với bạn

  • Nhìn vào Server2Go, WampOnCD và bạn bè để tạo ra một "đôi webserver có thể click" (Bắt đầu lúc Z-WAMP)
  • Bạn vẫn cần phải thích nghi với lớp DB của bạn như trong phiên bản 1

Phiên bản 3: "Web 2.x": Di chuyển ứng dụng từ máy chủ đến trình duyệt

  • Di chuyển logic ứng dụng của bạn từ phía máy chủ (PHP) sang phía máy khách (JS)
  • Làm cho phần máy chủ của bạn (PHP) chỉ truy cập dữ liệu hoặc đồng bộ hóa lớp
  • Sử dụng tính năng ngoại tuyến HTML5 để thay thế quyền truy cập dữ liệu của bạn bằng địa phương dữ liệu nếu bạn ngoại tuyến và để đồng bộ hóa lại nếu trực tuyến

Cái nào là tốt nhất?

Điều này phụ thuộc vào những gì bạn có và những gì bạn muốn. Nếu hầu hết logic nghiệp vụ của bạn là bằng PHP, thì việc chuyển nó vào trình duyệt có thể cực kỳ tốn kém - hãy lưu ý rằng điều này cũng tạo ra một loạt các cơn ác mộng an ninh hoàn toàn mới. Cá nhân tôi không khuyên bạn nên porting theo cách này, nhưng tôi khuyên bạn nên sử dụng nó cho các ứng dụng mới, nếu DB sao lưu không quá lớn.

Nếu bạn chọn giữ logic kinh doanh PHP của mình, thì yêu cầu giữa 1 và 2 thường là số lượng ứng dụng mà ứng dụng của bạn có bao nhiêu - nếu đó chỉ là một vài dạng CRUD, có thể là một ý tưởng hay - nó chắc chắn là di động nhất (theo nghĩa là mang nó theo bạn). Nếu không, đi với 2.

+0

Còn tùy chọn 3 thì sao? Bây giờ là năm 2014, là an toàn để phát triển các ứng dụng của chúng tôi với giải pháp Phiên bản 3? Xin vui lòng hướng dẫn, tôi đã yêu cầu phát triển một hệ thống cho một lớp học phí nhỏ viện quản lý sinh viên. Tôi đang nghĩ về phát triển dựa trên web hoặc di động (Android) là rất phù hợp. Bởi vì hệ thống PHẢI làm việc ngay cả khi không có Internet, như ở Sri Lanka, thỉnh thoảng internet bị hỏng. Cảm ơn –

2

Hãy nhìn vào HTML5 của application cache. Đó là khá nhiều những gì nó cho. Có plentyoftutorials xung quanh việc này, vì vậy hãy xem xét và xem liệu nó có phù hợp với nhu cầu của bạn hay không.

1

Tôi đã làm việc với hệ thống tương tự cho tàu. Internet là tốn kém ở giữa đại dương để họ có máy chủ web địa phương được cài đặt với đồng bộ hóa cơ sở dữ liệu qua e-mail.

Chúng tôi cũng đã tạo ra gói .exe đơn giản để mọi người không có kinh nghiệm có thể cài đặt hệ thống hoặc cập nhật hệ thống ...

+0

bạn có thể chia sẻ tệp .exe không? – Bassem

+0

xin lỗi, không thể chia sẻ nó –

Các vấn đề liên quan