2012-09-04 5 views
10

Ho un'applicazione web che memorizza i dati in un database MySQL on-line. Recupera anche i dati utilizzando il codice PHP, esegue calcoli sul server e rimanda il risultato all'utente.come creare un'applicazione php mysql che funziona offline

I dati sono piuttosto semplici: nomi, descrizioni, prezzi, IVA, addebiti orari letti dal database e manipolati sul lato server.

Spesso il client lavora in ambienti in cui la connessione Internet è scarsa o non disponibile. In questo caso vorrei che il client fosse in grado di lavorare offline: inserire nuovi nomi, descrizioni, prezzi e utilizzare l'ultima IVA per eseguire calcoli. Quindi sincronizzare tutti i dati non appena è disponibile una connessione.

Ora il problema è che non so quale sia il modo migliore o le tecnologie per raggiungere questo obiettivo. Non preoccuparti, non sto chiedendo di scrivere il codice per me. Puoi spiegarmi qual è il modo corretto per costruire un sistema del genere?

Esiste un modo semplice per utilizzare il mio codice MySQL e PHP in locale?

Devo salvare i dati di cui ho bisogno in un file locale, ricostruire il calcolo in JavaScript, eseguirli localmente e quindi sincronizzare i dati se il database è disponibile.

Devo utilizzare due database MySQL, uno locale e uno online e fare una sincronizzazione tra i due quando i dati sono disponibili? In caso affermativo quale tecnologia (lingua) utilizzerò per eseguire questa operazione?

Se possibile, vorrei una risposta dai programmatori PHP che hanno lavorato a un progetto simile in passato e possono darmi informazioni dettagliate sulla struttura del framework e sulla tecnologia da utilizzare. per favore ricorda che sono nuovo a questo modo di scrivere domanda e mi farebbe piacere se puoi risparmiare qualche minuto e spiegarmi tutto come se fossi di sei anni o stupido (quale sono!)

Apprezzo davvero qualsiasi aiuto e suggerimento.

Ciao,

Donato

+0

Ti suggerisco di rimappare la tua domanda - se vuoi che questo sia basato su browser, utilizzerai inevitabilmente javascript, la tecnologia lato server (es. PHP, mysql ecc.) Non è realmente pertinente. Se non si è strettamente limitati a un browser Web che si potrebbe desiderare di guardare CouchDB (http://couchdb.apache.org/) o simili, si tratta di un database di documenti progettato per l'utilizzo e la risincronizzazione offline. –

risposta

12

Ci sono essenzialmente 3 modi per andare:

Versione 1: "Old school ": PHP-GTK + e bcompiler

  • prima, se non lo avete già fatto, è necessario separare la logica di business dal livello di presentazione (HTML, i motori di templating, ...) e il livello database
  • quindi adattare il livello del database, in modo che possa vivere con un DB alternativo (SQlite locale mi viene in mente) ed eseguire la sincronizzazione nuovamente online
  • Infine utilizzare PHP-Gtk + per creare una nuova interfaccia utente e pacchetto tutto questo con bcompiler

Versione 2: "standard": Prendete il vostro server con voi

  • Guardate Server2Go, WampOnCD e gli amici per creare un "webserver doppio cliccabile" (inizio alle Z-WAMP)
  • Hai ancora bisogno di adattare il livello DB, come nella versione 1

Versione 3: "Web 2.x": applicazione Spostare dal server al browser

  • Spostare la logica dell'applicazione dal lato server (PHP) al lato client (JS)
  • Rendi il tuo server parte (PHP) solo un livello di accesso o sincronizzazione dati
  • Utilizza le funzionalità offline HTML5 per sostituire l'accesso ai dati con il locale dati se sei offline e risincronizza se online

Qual è il migliore?

Questo dipende da cosa hai e cosa vuoi. Se la maggior parte della tua logica aziendale è in PHP, spostarla nel browser potrebbe essere eccessivamente costosa - tieni presente che questo genera anche una nuova classe di nightmaar di sicurezza. Personalmente non raccomando di effettuare il porting porting, ma lo raccomando per le nuove app, se il DB di supporto non è troppo grande.

Se si è scelto di mantenere la logica di business PHP, la desinione tra 1 e 2 è spesso una questione di quanto l'interfaccia utente ha la propria app - se sono solo pochi moduli CRUD, 1. potrebbe essere una buona idea - è sicuramente il più portabile (nel senso di portarlo con te). In caso contrario, vai con 2.

+0

Cosa ne pensi dell'opzione 3? Ora è il 2014, è sicuro sviluppare le nostre applicazioni con la soluzione Versione 3? Per favore guida, ho chiesto di sviluppare un sistema per un piccolo istituto di lezioni universitarie per la gestione degli studenti. Penso che lo sviluppo basato sul Web o Mobile (Android) sia molto adatto. Perché il sistema DEVE funzionare anche senza Internet, come qui in Sri Lanka, Internet va giù a volte. Grazie –

2

Date un'occhiata al HTML5 di application cache. Questo è praticamente quello che serve. Ci sono plentyoftutorials in giro per questo, quindi dare un'occhiata in giro e vedere se si adatta alle vostre esigenze.

1

Ho lavorato con sistemi simili per navi. Internet è costoso nel mezzo dell'oceano e quindi i server Web locali sono installati con la sincronizzazione del database via e-mail.

Abbiamo inoltre creato semplici pacchetti .exe così le persone con nessuna esperienza può installare il sistema di sistema o l'aggiornamento ...

+0

puoi condividere l'exe? – Bassem

+0

scusa, non posso condividerlo –