Il contenuto del file cambia? Se è statico o relativamente statico, è possibile creare un elenco di offset in cui si desidera leggere i dati. Per esempio, se i cambiamenti dei file una volta all'anno, ma si leggono centinaia di volte al giorno, quindi è possibile pre-calcolare gli offset delle linee che si desidera e saltare direttamente in questo modo:
$offsets = array();
while ($line = fread($filehandle)) { .... find line 10 .... }
$offsets[10] = ftell($filehandle); // store line 10's location
.... find next line
$offsets[20] = ftell($filehandle);
e presto. Successivamente, è possibile saltare banalmente alla posizione di quella linea in questo modo:
$fh = fopen('file.txt', 'rb');
fseek($fh, $offsets[20]); // jump to line 20
Ma questo potrebbe essere completamente eccessivo.Prova il benchmarking delle operazioni: confronta il tempo necessario per eseguire una "lettura di 20 righe" vecchio stile rispetto a precompute/salta.
fonte
2010-04-09 02:41:25
Si prega di commentare il downvote – Yacoby
Tale database sarà più veloce è soggettivo. Se l'informazione a cui sta cercando di accedere è all'inizio del file, sarà molto più veloce. La lettura da un database sta ancora leggendo da un file. Otterrà miglioramenti dall'indice del database solo se sta cercando qualcosa di diverso dall'inizio del file. Dipende anche da ciò che sta cercando di ottenere esattamente. –
Non ha mai detto che il database sarebbe più veloce. Solo che sarebbe meglio. La preoccupazione dell'OP potrebbe essere vista come un problema di memoria piuttosto che di velocità. – webbiedave