Domanda

La situazione

Quando studi scienze sociali, ti trovi spesso di fronte alla necessità di sondaggi online (raccolta di dati scientifici online). Questo è uno dei motivi principali per cui ho iniziato con PHP in primo luogo.

Di recente queste applicazioni di sondaggio sono cresciute e cresciute. È stata aggiunta una molta complessità : reportistica (grafici flash, generazione di PDF), aggregazione dei dati, diversi livelli di aggregazione (ad es. Unità aziendali), selezione del modulo del questionario per le società coinvolte, ecc.

Ora mi vedo di fronte a una complessa applicazione di raccolta e segnalazione dei dati che sta diventando lenta e non mantenibile .

Una delle mie piattaforme ha fino a 100 nuovi utenti al giorno e aggrega / riporta i dati di diversi migliaia di utenti volte centinaia di elementi di dati volte dozzine di livelli gerarchici .

Le mie domande

  • PHP / mysql è ancora una strada da percorrere?
  • un framework come codeIgnitor potrebbe essere una base per tale applicazione o dovrei sviluppare tutto da zero?
  • conosci qualche tipo di framework specifico per il sondaggio che potrei usare come base?
È stato utile?

Soluzione

  

PHP / mysql è ancora una strada da percorrere?

Sì, PHP / MYSQL (LAMP) è stato utilizzato con successo in centinaia di siti con basi di utenti esponenzialmente più grandi delle vostre.

  

un framework come codeIgnitor potrebbe essere una base per tale applicazione o dovrei sviluppare tutto da zero?

I siti PHP non banali creati senza un framework (o un framework personalizzato) tendono a diventare sciatti velocemente. I framework PHP sono ora la norma per iniziare, consiglierei personalmente il Zend Framework . È un framework molto robusto, che fornisce strumenti per molte attività PHP comuni (sostituzione / miglioramenti per Database, Date, JSON, RPC, REST) ??e una metodologia organizzata per lo sviluppo di applicazioni Web: MVC utilizzando Zend_Controller .

  

conosci qualche tipo di framework specifico per il sondaggio che potrei usare come base?

Nessuno di cui io sia a conoscenza, ma potresti provare a usare Zend_Form per generare automaticamente elementi del modulo (tipo, filtri, disinfettanti, validatori) dai file di configurazione.

Altri suggerimenti

PHP / mysql dovrebbe andare bene per questa scala, ma è necessario ottimizzarlo e dargli risorse sufficienti.

Ad esempio, se il tuo schema non è pensato, colpirai tutti i tipi di performance wall. Il modo in cui i dati vengono archiviati e indicizzati è probabilmente il fattore più importante per le prestazioni dei report. Ho avuto 60-100 GB di dati in mysql con tempi di risposta inferiori al secondo per query leggermente complesse. I fattori importanti sono stati:

  • i miei dati sono stati indicizzati per il modo in cui li ho usati
  • le domande che ho usato sono state pensate, testate e ottimizzate

Successivamente, devi fornire al tuo server MySQL risorse sufficienti. Se stai eseguendo la tua app su un server host condiviso e stai utilizzando le impostazioni predefinite, probabilmente mysql non funzionerà bene con più di qualche centinaio di MB di dati. Assicurati che le tue cache siano ottimizzate, i tuoi tipi di tabella hanno senso per la tua applicazione e hai abbastanza memoria e dischi abbastanza veloci per soddisfare le tue esigenze prestazionali.

E infine, c'è un trucco che tutti usiamo quando i nostri set di dati diventano grandi: generare i tuoi report su un cron anziché su richiesta. Se per generare un grafico flash sono necessari 2 minuti, far eseguire un cron ogni 5 minuti per generare i dati. Inseriscilo in un file da qualche parte e sputalo sul software di creazione grafica invece di interrogare il database in tempo reale.

Dovresti guardare nell'applicazione Open Source Limesurvey.

Utilizza PHP / Mysql, in modo da rispondere a una delle tue domande sull'adeguatezza di PHP per l'attività.

La versione precedente di Limesurvey è stata scritta in CodeIgniter, ma i progetti condotti sono cambiati nel framework Yii dopo incertezza e confusione sulle licenze CodeIgniter.

Alla tua terza domanda è stata data una risposta sopra.

Riferimenti: https://www.limesurvey.org/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top