2010-11-18 24 views
9

Il mio problema è la creazione di un array PHP nidificato di grandi dimensioni che analizza le informazioni da più fonti esterne.Memorizzazione nella cache di una matrice PHP

Al primo ritorno vorrei memorizzare questi dati nella cache.

Sono abbastanza nuovo per il caching quindi non so davvero cosa dovrei cercare, qualsiasi metodo buono o cattivo o anche se questa è una pratica comune! Ho cercato su google ma non ho trovato davvero nulla di decente per un noob di cache.

Im già utilizzando smarty per memorizzare nella cache il mio contenuto della pagina (esclusi i bit dinamici), apportato modifiche apache, minifying ecc per aumentare le prestazioni, ma il caricamento della pagina è ancora molto lungo. A volte fino a 8 secondi!

Utilizzo di PHP5 con Smarty. Usando cURL per analizzare l'XML che viene quindi archiviato nell'array.

+0

controllo le prestazioni di scaricare l'XML usando CURL, chiama sempre risorse esterne/contenuti che causano la prestazione, non il PHP stesso – ajreal

+0

Grazie ajreal per il tuo commento. Dopo aver letto il tuo commento sono stato alla ricerca e cercherò di utilizzare php multi_exec per eseguire le cose in parallelo. È questo l'unico modo per migliorare l'analisi di GET e POSTS multipli? Altri suggerimenti e trucchi per aumentare le prestazioni (oltre a ottenere un LOL server più potente) – fl3x7

risposta

15

Si potrebbe provare a memorizzare nella cache in un file:

file_put_contents("cache_file", serialize($myArray)); 

Poi per caricare la cache:

$myArray = unserialize(file_get_contents("cache_file")); 

Ciò funzionerà se le cose nella vostra gamma sono serializzabile: nessuna connessione DB o di file maniglie o cose del genere. Stringhe e numeri vanno bene.

Se hai bisogno di qualcosa di più interessante puoi usare una cache basata sulla memoria come memcached.

+0

Grazie mille! L'opzione serializza sembra molto utile. L'ho provato e sembra che funzioni. Tuttavia ricevo l'avviso: Avviso: unserialize() [function.unserialize]: Nodo non esiste più in C: \ xampp \ htdocs \ foo.php on line 75 È a causa del problema delle stringhe. Ive ha controllato tutti i miei contenuti nell'array e sono tutte stringhe o interi. Anche il risultato sembra essere giusto. Qualsiasi aiuto apprezzato – fl3x7

+0

Non permettermi di modificare il mio commento sopra, ma volevo solo dire anche se non ho trovato una correzione all'errore che sto ottenendo penso che abbia a che fare con questo: http://stackoverflow.com/questions/119234/ php-unserialize-keep-throwing-same-error-over-100-times Il continuo provare comunque. se qualcuno può far luce su una soluzione che sarebbe grande. Ancora grazie a tutti per il vostro aiuto :) – fl3x7

+0

Woo. Ho appena espressamente lanciato le variabili come stringhe e int e ha funzionato! – fl3x7

0

hai pensato di inserire static $ yourData = array(); nel tuo metodo in cui scarichi i dati, quindi verifica se ci sono dei dati in questo array statico e li usi, ottenere i dati in modo eccessivo? Spero che questo aiuti in qualche modo: D

Problemi correlati