2012-08-24 8 views
5

Possiedo un servizio Web PHP che sto creando.Arresto delle letture del database in attesa del rendering dell'interfaccia utente Web

Posso vedere un problema che si profila, e vorrei qualche input su come combatterlo, prima di scrivere troppo codice.

Ho 14 siti, ognuno dei quali contiene un'istanza di un database mysql, che viene aggiornato da un altro script perl personalizzato.

Per consolidare questi dati in un unico front-end Web, sto tentando di scrivere una pagina Web di php che effettui quanto segue.

Nella prima pagina, il server Web si collega a tutti e 14 i server di database e recupera le informazioni necessarie, quindi esegue il rendering sulla pagina. Attualmente funziona in modo impeccabile poiché tutti i dati sono conservati sul mio computer locale, ma in produzione questi dati saranno distribuiti tra i 14 database separati.

Quindi la mia domanda è, qual è il modo migliore per andare ad astrarre le letture del database dalla pittura dell'interfaccia utente. Idealmente mi piacerebbe avere il rendering completo della pagina web, con una barra di caricamento che indica quando l'utente potrebbe aspettarsi che i dati vengano visualizzati.

È qualcosa raggiungibile tramite AJAX o dovrei guardare in un'altra direzione.

Grazie in anticipo.

+0

Considerare l'utilizzo della replica del database master/slave se possibile, quindi ci si connette al database master –

+0

Ciao Mark, grazie. Ci avevo pensato, ma a causa della mia miopia, tutti i dati in ognuno dei diversi database provengono da un sito diverso, ma le chiavi primarie si confonderanno, poiché non pensavo che avrei mai avuto bisogno di combinare i dati .. – Steve

+0

Ci sono modi di gestire le chiavi in ​​conflitto, o schemi diversi per ogni schiavo sarebbe un altro modo che ...ma come hai già seguito un percorso diverso è probabilmente un po 'tardi per provare ora –

risposta

1

vorrei fare qualcosa di simile:

  • creare un piccolo delega PHP che può essere richiamabile da AJAX, come si non può collegarsi ad altri siti con AJAX
  • visualizzazione layout di pagina intera con gli elementi vuoti
  • iniziare a visualizzare gli elementi non appena il DOM è pronto con AJAX
  • ogni elemento avrà una barra di caricamento, non appena si inizia a caricare i dati dalle funzioni

Esempio:

___________________________________ 
| data_1 | data_2 | data_3 | data_4 | 
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ 

funzione di avvio loadData1() sostituirà data1_id con una barra di caricamento e iniziare a chiamare AJAX

___________________________________ 
| ...... | data_2 | data_3 | data_4 | 
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ 

Lo stesso vale per gli altri elementi

+0

Questo ha funzionato meravigliosamente grazie. – Steve

0

Ajax è la soluzione migliore: caricare la pagina di base e quindi avviare le richieste Ajax da quella pagina sul server per raccogliere i dati. Per motivi di sicurezza non credo che sarete in grado di creare le richieste Ajax per altri server

+0

Ovviamente puoi creare richieste Ajax ad altri server. Una richiesta Ajax agisce allo stesso modo di una richiesta del browser. –

0

Perché non mettere in cache il contenuto localmente (quindi l'utente non deve aspettare) e quindi recuperare i contenuti live tramite ajax?

+0

Im preoccupato che questo potrebbe finire per essere troppi dati per la cache in locale, piuttosto che andare e ottenere la fetta esatta di dati che l'utente vuole. – Steve

Problemi correlati