2012-09-04 39 views
10

Tengo una aplicación web que almacena datos en una base de datos MySQL en línea. También recupera datos usando código PHP, realiza cálculos en el servidor y envía el resultado al usuario.cómo construir una aplicación php mysql que funcione sin conexión

Datos es bastante simple: nombres, descripciones, precios, IVA, cargos por hora que se leen de la base de datos y se manipulan en el lado del servidor.

A menudo el trabajo del cliente en entornos donde la conexión a Internet es pobre o no está disponible. En este caso, me gustaría que el cliente pueda trabajar fuera de línea: ingrese nuevos nombres, descripciones, precios y use el último IVA para realizar cálculos. Luego sincronice todos los datos tan pronto como haya una conexión disponible.

Ahora el problema es que no sé cuál es la mejor manera o las tecnologías para lograr esto. No te preocupes, no estoy pidiendo escribir código para mí. ¿Puedes explicarme cuál es la forma correcta de construir un sistema así?

¿Existe una manera simple de usar mi código MySQL y PHP en línea localmente?

Debo guardar los datos que necesito en un archivo local, reconstruir el cálculo en JavaScript, realizarlos localmente y luego sincronizar los datos si la base de datos está disponible.

¿Debo usar dos bases de datos MySQL, una local y una en línea y hacer una sincronización entre las dos cuando haya datos disponibles? En caso afirmativo, ¿qué tecnología (lenguaje) debo usar para realizar esta operación?

Si es posible, me gustaría obtener una respuesta de los programadores de PHP que trabajaron en un proyecto similar en el pasado y me pueden dar información detallada sobre la estructura del marco y la tecnología para usar. por favor, recuerde que soy nuevo en esta forma de escribir una solicitud y le agradecería si puede dedicar unos minutos y explicarme todo si tengo seis años o soy estúpido (¡y lo soy!)

Realmente aprecio cualquier ayuda y sugerencia

Ciao,

Donato

+0

Te sugiero que vuelvas a etiquetar tu pregunta: si quieres que esto se base en un navegador, inevitablemente usarás javascript, la tecnología del lado del servidor (es decir, PHP, mysql, etc.) no es realmente pertinente. Si no está estrictamente limitado a un navegador web, le recomendamos que consulte CouchDB (http://couchdb.apache.org/) o similar, que es una base de datos de documentos diseñada para uso y resincronización sin conexión. –

Respuesta

12

Fundamentalmente, hay 3 maneras de ir:

Versión 1: "La vieja escuela ": PHP-GTK + y bcompiler

  • en primer lugar, si no lo ha hecho ya, es necesario separar la lógica de negocio de su capa de presentación (HTML, motores de plantillas, ...) Y la capa de base de datos
  • entonces adaptar su capa de base de datos, de modo que pueda vivir con una alternativa DB (local SQLite viene a la mente) y realizar la sincronización cuando esté en línea de nuevo
  • Finalmente usar PHP-GTK + para crear una nueva interfaz de usuario y el paquete todo esto con bcompiler

Versión 2: "Estándar": Tome su servidor con el que

  • Mira Server2Go, WampOnCD y amigos para crear un "servidor web puede hacer clic doble" (inicio en Z-WAMP)
  • Todavía es necesario adaptar su capa de base de datos que en la Versión 1

Versión 3: "2.x Web": Mover la aplicación del servidor al navegador

  • Mueva su lógica de aplicación desde el lado del servidor (PHP) al lado del cliente (JS)
  • Haga que su parte del servidor (PHP) sea solo una capa de acceso o sincronización de datos
  • Use las funciones de HTML5 sin conexión para reemplazar su acceso a datos con local datos si no está conectado y resincronizar si está en línea

¿Cuál es la mejor?

Esto depende de lo que tenga y de lo que desee. Si la mayor parte de la lógica de su negocio está en PHP, entonces moverla al navegador podría ser prohibitivamente costoso; tenga en cuenta que esto también genera una clase completamente nueva de nightmaares de seguridad. Personalmente, no recomiendo portar de esta manera, pero sí lo recomiendo para nuevas aplicaciones, si la base de datos de respaldo no es demasiado grande.

Si opta por mantener su lógica comercial de PHP, la desición entre 1 y 2 suele ser una restricción de la cantidad de UI que tiene su aplicación. Si solo son unas pocas formas CRUD, podría ser una buena idea. es definitivamente el más portátil (en el sentido de llevarlo con usted). Si no, ve con 2.

+0

¿Qué sucede con la opción 3? Ahora es 2014, ¿es seguro desarrollar nuestras aplicaciones con la solución de la Versión 3? Por favor guía, he pedido desarrollar un sistema para una pequeña clase de matrícula instituto de administración de estudiantes. Estoy pensando en el desarrollo basado en la Web o móvil (Android) es muy adecuado. Debido a que el sistema DEBE funcionar incluso sin Internet, como aquí en Sri Lanka, a veces se interrumpe el acceso a Internet. Gracias –

2

Tener un vistazo a HTML5 de application cache. Eso es más o menos para lo que es. Hay plentyoftutorials para esto, así que eche un vistazo y vea si se adapta a sus necesidades.

1

He trabajado con un sistema similar para barcos. Internet es costoso en el medio del océano, por lo que tienen servidores web locales instalados con sincronización de la base de datos por correo electrónico.

También hemos creado paquetes .exe sencillas para personas sin experiencia pueden instalar el sistema de actualización del sistema o ...

+0

¿puedes compartir el .exe? – Bassem

+0

lo siento, no puedo compartirlo –

Cuestiones relacionadas