Come sempre io non so fare a scegliere titoli migliori…
Vi spiego: ho un processo in background, scatenato dall’azione di un utente. Questo prevede di scrivere su redis la percentuale di avanzamento, la pagina web controlla la percentuale e la mostra all’utente. fino a qua una meraviglia, potete anche chiudere il browser e riaprirlo e vedete la percentuale di avanzamento aggiornata in tempo reale (ogni 2 secondi tramite ajax).
Ok.
cosa fa il processo? raccoglie tramite una operazione che coinvolge decine di milioni di record, alcune centinaia di id che corrispondono a record ‘difettosi’. questi id rimangono in redis, in modo che l’utente per alcune ore veda sempre gli stessi risultati e non riesegua quel processo massacrante e lunghissimo.
Il primo problema sta nel fatto che al termine devo fare vedere questi record, facendo una select * from tabella where id in (quelli letti da redis) e permettendo all’utente di scorrere tra le pagine.
Il secondo problema è che in realtà il risultato sono DUE liste di id e devo fare una union per forza… come si fa ?!
Domanda: come faccio a dare in pasto alla GridView (che usa model->search() di solito, quindi un CActiveDataProvider), la mia query ?
Devo creare un CActiveDataProvider, ma come gli compongo i criteria a mano ?
Oppure c’è una strada migliore ?