Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    51

    Aiuto: accessi multipli ad un file. Come fare?

    Ciao,

    Lo scenario e' questo: ci sono molti utenti che devono scrivere sullo stesso file.
    Immagino pero' che possano succedere seri casini se piu' utenti aprono in scrittura lo stesso file, giusto?

    Penso che sia un problema classico, ma finora non ho trovato niente.
    Come si fa a gestire gli accessi multipli ad uno stesso file?

    Grazie,

    Zax

  2. #2
    potresti inserire in un loop un controllo che verifica se il file è scrivibile, quindi scriverci dentro. Il loop dovrebbe essere eseguito ad intervalli regolari, ma potrebbe costringere l'utente ad una attesa piuttosto lunga se gli utenti sono tanti. per ora è l'unica cosa che mi viene in mente.
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Se cerchi su qs forum "contatore visite", se n'è parlato tempo addietro.

    Quanto ti è stato detto da Lathspell è giusto, ma ricorda che queste "porcherie" non si fanno... Si usa un db che è fatto per questo...

    [.:: JaguarXF ::.]
    __________________

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    51
    Grazie!!

    Ho cercato con "contatore visite".
    L'unica pagina che mi sembra interessante e' questa:

    http://forum.html.it/forum/showthrea...ntatore+visite

    ma non ho capito una cosa...chi lokka il file nel codice sopra?
    Poi la scrittura viene comunque interrotta e la cosa da scrivere si perde.

    Invece e' interessante l'idea del loop, ma mi sfugge un po'. Non potresti farmi un esempio in pseudocodice?

    Ricguardo il db...si e' certamente meglio, ma e' enormemente sproporzionato per quello che serve a me...

    Grazie ancora!!

  5. #5
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Fai un bel ciclo del tipo

    Codice PHP:
    while (!is_writable($file))  ;
    aggiornamento_file 
    Ma ripudio ciò che ho scritto

    [.:: JaguarXF ::.]
    __________________

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    51
    Grazie!
    Anche se poco ortodosso, puo' risolvere parecchi problemi qundo si progetta un sistema per pochi utenti.

    Ad ogni modo ho trovato un sistema differente.
    Invece di far scrivere nello stesso file, una riga ad ogni utente (di una riga si trattava), faccio il modo che ogni utente scriva un differente file (i file saranno raggruppabili in base al nome e alla dir che li contiene).

    Cosi' ho risolto in maniera semplice senza utilizzare db, senza tempi di attesa.

    Una domanda. Quanto e' dispendioso readdir? Nel senso che ora leggo i contenuti di varie cartelle (prima invece bastava leggere vari files) e apro solo il primo e l'ultimo per ogni cartella.

    Credo che solo la lettura dei files contenuti in una cartella non sia dispendiosa tanto quanto la loro apertura...ma non so rendermi conto di quanto possa impegnare il PC il readdir di una cartella che contiene (ad esempio) 1000 files...

  7. #7
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da zaxis
    Una domanda. Quanto e' dispendioso readdir? Nel senso che ora leggo i contenuti di varie cartelle (prima invece bastava leggere vari files) e apro solo il primo e l'ultimo per ogni cartella.

    Credo che solo la lettura dei files contenuti in una cartella non sia dispendiosa tanto quanto la loro apertura...ma non so rendermi conto di quanto possa impegnare il PC il readdir di una cartella che contiene (ad esempio) 1000 files...
    Prova tu stesso: http://it.php.net/manual/it/function.microtime.php

    [.:: JaguarXF ::.]
    __________________

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    51
    Ho fatto delle prove.
    Mi sembra molto performante:

    Lettura 10002 directories vuote in 0.052145004272461 seconds
    Lettura 10001 directories piene con 3 files da 1 Kb in 0.052027940750122 seconds

    se quindi ripartisco gli argomenti a cui accedere in cartelle, ognuna delle quali contiene i vari files scritti dai vari utenti, posso gestire tranquillamente fino a 10000 argomenti.

    Questo invece di avere 10000 files in cui dovevano esserci gli accessi multipli...

    mi pare una buona soluzione, considerando che non necessita di db...

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Le prestazioni in questo caso dipendono dal filesystem utilizzato. Per listare un certo numero di cartelle in genere ci si riferisce alla tabella di allocazione (Win con la FAT32 e Linux con gli inode). Amiga non lo aveva ad esempio, e leggere 1000 cartelle dava esattamente un tempo di 1000 volte superiore... ;o

    In ogni modo, non è una buona idea fare lavorare l'HD in questo modo: pensa se 1000 utenti fossero connessi, che giramento di... testine

    [.:: JaguarXF ::.]
    __________________

  10. #10

    .............

    Ciao.
    Per completezza segnalo visto che
    non è venuta in mente a nessuno
    la function flock
    che è pensata appositamente per problemi di questo
    tipo.



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.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.