Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Ricerca da velocizzare o forse meglio da indicizzare...

    Buon Giorno a tutti,
    in quanto spero non ci sia nessuno pazzo come me che il Lunedì di pasqua mi mette a pensare a sta roba.

    Eccovi esposta la mia domanda:
    Ho scritto una funzione ricorsiva in PHP 4.5 che effettua l'esplorazione delle directory a partire da una root ricercando i file che cominciano con una determinata stringa, e tutto va bene, peccato che appeno lo ho provato con dei dati veri, il sistema ci ha messo circa 180 secondi (3 minuti)

    UN PO' TROPPO!!!

    Quindi avevo pensato di dirottare tutto l'albero delle directory compresi i file ivi contenuti in un file di testo e poi fare la ricerca su questo, ma prima di addentrarmi nella realizzazione dello script, vi chiedevo se qualcuno ha qualche consiglio da darmi su come realizzare uno script del genere.

    Grazie mille per il vostro prezioso aiuto....

    Daniele


  2. #2
    Io ti consiglio di costruire un albero xml con i nomi dei files su cui fare delle query xpath(http://it2.php.net/manual/it/functio...path-query.php).
    Con php per giocare con gli XML si può usare l'estensione DOM: http://it2.php.net/manual/it/ref.dom.php

    Oppure usa MySql con una tabella.

    Ciao

    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  3. #3
    Grazie mille per la risposta cosi' rapida ma ti devo fare un piccolo appunto, perchè non so se sono stato chiaro, anche perchè non conosco quasi niente di XML.

    Quello che mi serve è un qualcosa di altamente perfomante dal punto di vista della ricerca e della rigenerazione/refresh, se XML lo è ben venga.

    Per quanto riguarda Database in genere lo escludo perchè da specifica non posso usarli.

    E comunque vi chiedo ulteriori suggerimenti in quanto come ho già detto la mole di file da scorrere è molto nutrita dell'ordine dei milione o due, vi chiedo un consiglio anche sul modo di scorrere tutti questi file, il ricorsivo va bene o è troppo oneroso se ho cosi' tanti elementi da scorrere???

    Aspetto una vostra preziosa risposta...

  4. #4
    Per la ricerca bisogna vedere, se il file è grande, e penso che lo sia, non è performante caricarsi tutto nel buffer, di conseguenza, conviene leggere un pò di bytes per volta dal file ed effettuare la ricerca in quei bytes.


    Per "rigenerazione/refresh" intendi un aggiornamento di questa base dati quando vengono aggiunti o cancellati dei files?
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  5. #5
    SI con aggiornamento/refresh intendo la rigenerazione del mio file di testo o altro contenente la mia struttura dei file+directory, quando viene aggiunto qualcosa.

  6. #6
    Pensandoci un attimo, poichè hai milioni di files...tramite uno script puoi creare delle cartelle ordinate secondo l'alfabeto e distribuire i files in base alla loro iniziale, in modo tale che, quando lo script di ricerca deve trovare una stringa, scarti tutti quei files che non iniziano con il primo carattere di questa.
    In questo modo ne escludi un pò, sempre se hai la possibilità di farlo.

    Per la rigenerazione, non so cosa si possa fare oltre la chiamata a una funzione ricorsiva come hai già detto.
    D'altronde, per quanto riguarda la velocità della rigenerazione stessa, conviene ogni volta fare un aggiornamento(controllando per ogni file se è già nell'elenco) o ricostruire l'elenco da capo ciclando tutti i milioni di files?
    Penso che la seconda sia più semplice, ma non so se sia la più performante.

    Ciao

    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.