Visualizzazione risultati 1 fino 12 di 12

Discussione: File di testo come database in PHP

  1. #1
    Guest

    Predefinito File di testo come database in PHP

    Salve
    sono qua da poco e gia il secondo problema... scusate ma sono un po alle prime armi eheh
    Sempre riguardo al PHP visto che mi sto concentrando su di quello, sto realizzando un'area download, con la possibilita di inserire nuovi file, con tanto di commento.
    Per ogni nuovo file quindi, va salvata una combinazione nomefile|commento

    inserendo commenti in una tabella del database mysql sarebbe relativamente facile facendo una tabella con campi nomefile|commento, ma io volevo evitare l'uso del database, perchè ho un database a query limitate, e vorrei anche che fosse utilizzabile il tutto senza possedere un database.

    Per organizzare i commenti intendevo usare quindi un file di testo, risolvendo il problema...
    Facendo un file del tipo:

    nome|commento
    nome1|commento1
    nome2|commento2
    nome2|commento2

    poi utilizzando la funzione explode() riprendermi il contenuto e visualizzarlo

    ne sorge un altro però, il numero di commenti che si possono inserire puo essere anche molto elevato, arrivando quindi a centinaia di commenti uno dopo l'altro, mettiamo che mi serva il 150esimo commento, dovrei far leggere tutto il file da capo, fino alla riga giusta... ma se il file ha una certa dimensione, pensavo che potrebbe risultare lento il processo e quindi rallentare notevolmente la pagina...

    la mia seconda alternativa era creare un file di testo per ogni coppia file|commento, e al suo interno scriverci il commento. La lettura risulterebbe piu veloce credo, però avrei centinaia di file di testo...

    una risparmia in numero di file, ma ne aumenta la dimensione,
    l'altro risparmia in dimensione, ma aumenta il numero di file...

    a vostro parere quale sarebbe il metodo migliore?

  2. #2
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    io personalmente uso il secondo, tanto che mi importa di avere migliaia di file, quando li metto dentro una bella serie di cartelle?

    E comunque ti do un consiglio: metti sempre un identificativo alle varie cose, ad esempio, invece di fare nome|commento, fai id|nome|commento così da avere qualcosa di univoco per fare confronti.
    L'id lo puoi mettere con la funzione time().

    Ciao!

    EDIT: Sei tu l'autore di tes.altervista??? Grande!
    Ultima modifica di Leo91 : 11-07-2007 alle ore 14.51.01

  3. #3
    Guest

    Predefinito

    Non proprio l'autore di tes, il sito è stato fondato da Rowenn, il punto e che purtroppo per impegni non ha piu tempo di svilupparlo e mi ha passato l'incarico, e ora me ne occupo io :D

    In ogni caso avevo una certa idea sul fatto che la seconda fosse la migliore, del resto, se hosto cosi tanti file, potro permettermi altrettanti file di testo...
    bene!

    ma non ho ben capito a quale scopo dovrei utilizzare l'ID

  4. #4
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Beh, vedi se hai un elemento da commentare, nel file del commento potrai inserirci l'id dell'elemento commentato per vedere a che cosa ti riferisci..

    ma forse esistono altri metodi, non so, tu come fai?

  5. #5
    Guest

    Predefinito

    beh,io personalmente fin'ora (è tutto ancora molto provvisorio e accetta modifiche)
    faccio in modo che la distinzione univoca sia fatta per il nome del file, e che non venga consentito l'upload di nuovi file con nome analogo a uno già presente...
    in questo modo, Dovrei evitare doppioni, e far si che il nome file, oltre che da fare come nome file, faccia anche da ID... sto valutando il vantaggio di avere anche un id...

    il mio problema è anche che...
    al momento di fare una lista di tutti i file, uso glob() per vedere i file disponibili, e li visualizzo in base al loro nome,non in base al loro id,perchè sarebbe impossibile
    Ultima modifica di Dharlet : 11-07-2007 alle ore 17.48.46

  6. #6
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Usa un file solo.
    Primo perchè è più comodo da esportare.
    Secondo perchè puoi facilmente decidere quante righe del file leggere senza scorrere tutti i commenti per visualizzare ad esempio solo 10 commenti a volta.
    Terzo perchè un file lo puoi facilmente convertire in altri formati o importarlo in un database nel caso si volesse passare a DB.
    Quarto quando i file diventano troppi l'accesso alla directory in listing si rallenta rendendo problematico un accesso attraverso filemanager.

    Per fare una cosa bella potresti usare gli XML, concettualmente è la stessa cosa, ma in rete esiste del codice che ti permetterebbe di farlo velocemente.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  7. #7
    Guest

    Predefinito

    Non so se l'ho detto ma...
    nel mettere tutti i commenti in un solo file, i commenti non li leggerei tutti, bensi ogni singolo commento sta su un file diverso e quindi su una pagina diversa, quindi dovrei leggere solo un record per volta...
    ma è vero che per leggere il 500 commento in fondo, devo leggere tutto il file, e il tempo di elaborazione della pagina si allunga? in che ordine di grandezza? pochi millisecondo o puo essere anche molto elevato?

  8. #8
    Guest

    Predefinito

    Secondo me se il file di testo ti arriva a 500 righe (una per ogni file/programma inserito) riesci benissimo a mantenere il database di classe 6 con uno solo dei banner grandi...
    Ciao

  9. #9
    Guest

    Predefinito

    il punto è che il commento non occupa una sola riga nel file di testo... puo essere 5- 10 -20 righe o piu, il che mi renderebbe un unico file per imaggazzinarli, letteralmente enorme!
    e ho pensato che potrebbe andare a scapito delle prestazioni...
    mentre un file solo per ogni file/programma inserito, sarebbe facile da leggere, e siccome inserito in una cartella non darebbe neanche troppo fastidio...

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    una soluzione media, dove usi un file per ogni "thread" di commenti ?

  11. #11
    Guest

    Predefinito

    ok... in poche parole uno per file...
    proverò e vi faro sapere :D

  12. #12
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    senò fai così:

    EDIT: Non c'era logica in ciò che ho scritto qui

    Comunque non c'è bisogno di scorrere tutto il file, potresti impaginarlo in modo da visualizzare 10 risultati per pagina

    Insomma, non sono stato chiaro affatto:

    db.txt - Contiene tutti i file caricati
    id|nomefile|\n

    dentro una cartella (commenti) ogni volta che una persona inserisce un commento appendi al file chiamato "id" questa stringa
    idcommento|autore|testo|\n

    togliendo da autore e testo gli eventuali \n

    l'idcommento potrebbe servirti quando andrai a modificare/cancellare un commento e lo ricavi tramite time() o come ti pare

    Così andrai a cercare la lista dei file qui -> db.txt
    E quando cliccherai sul link di un file passerai il suo id ($_GET['id']) che ti servirà per sapere il nome del file con i commenti del file scelto.
    Ultima modifica di Leo91 : 12-07-2007 alle ore 11.53.45

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •