Ho uno script che, quando messo contro un timer, diventa progressivamente più lento. È abbastanza semplice poiché tutto ciò che fa è leggere una riga, controllarla, quindi aggiungerla al database, quindi passare alla riga successiva.Lo script PHP diventa progressivamente più lento (lettore di file)
ecco l'output di esso via via peggiorando:
Record: #1,001 Memory: 1,355,360kb taking 1.84s
Record: #1,001 Memory: 1,355,360kb taking 1.84s
Record: #2,002 Memory: 1,355,192kb taking 2.12s
Record: #3,003 Memory: 1,355,192kb taking 2.39s
Record: #4,004 Memory: 1,355,192kb taking 2.65s
Record: #5,005 Memory: 1,355,200kb taking 2.94s
Record: #6,006 Memory: 1,355,376kb taking 3.28s
Record: #7,007 Memory: 1,355,176kb taking 3.56s
Record: #8,008 Memory: 1,355,408kb taking 3.81s
Record: #9,009 Memory: 1,355,464kb taking 4.07s
Record: #10,010 Memory: 1,355,392kb taking 4.32s
Record: #11,011 Memory: 1,355,352kb taking 4.63s
Record: #12,012 Memory: 1,355,376kb taking 4.90s
Record: #13,013 Memory: 1,355,200kb taking 5.14s
Record: #14,014 Memory: 1,355,184kb taking 5.43s
Record: #15,015 Memory: 1,355,344kb taking 5.72s
Il file, purtroppo, è di circa ~ 20GB così io probabilmente essere morto per il momento il tutto è letto sul tasso di aumento. Il codice è (principalmente) sotto, ma ho il sospetto che abbia qualcosa a che fare con fgets(), ma non sono sicuro di cosa.
$handle = fopen ($import_file, 'r');
while ($line = fgets ($handle))
{
$data = json_decode ($line);
save_record ($data, $line);
}
Grazie in anticipo!
EDIT:
Commentando out 'save_record ($ dati, $ linea);' sembra non fare nulla.
Puoi pubblicare il codice per save_record? Questa è probabilmente la chiave – Jhong
In realtà se commento la riga save_record() è ancora così male. – DCD
Come stai ottenendo quell'output di prestazioni? Non hai alcuna registrazione delle prestazioni nell'esempio di codice che hai fornito. Sospetto che il problema sia altrove. Avete qualche altro codice che non state mostrando che potrebbe essere rilevante? –