La cosa migliore da fare, è delegare l'operazione ad una (complessa) query che indubbiamente impiegherà un tempo decisamente inferioreOriginariamente inviato da Dascos
Cicli sulle keywords ed estrai in "like" dalle email.
Per fare in modo da non gravare sul server puoi crearti uno script che "cronnizzi", salvando di volta in volta l'ultimo intervallo estratto.
Spiego.
POC
Questo script lo metti in un crontab e lo fai eseguire ogni...boh...5 minuti?codice:funzione crea csv { limite = select primo, ultimo from tabella_limiti; if !limite { limite_inf = 0 limite sup = 5000 } else { limite_inf = primo limite_sup = ultimo } chiavi = select keyword from tabella_chiavi foreach chiavi as chiave { emails = selet email from tabella_email where email like '%chiave%' limit limite_inf, limite_sup email_formato_csv = elabora_email(emails) file put chiave.csv => email_formato_csv } aggiorna_limit = update tabella_limiti set primo = limite_sup, ultimo = ultimo+limite_sup }
5.000.000 / 5.000 = 1.000 "cicli" * 5 minuti = 5.000 minuti / 60 = 83 ore = 3 giorni circa.
Se va eguito più frequentemente adatti il cron e ottimizzi il codice, eventualmente