Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116

    Richieste eseguite in parallelo o seriale?

    Salve a tutti =)

    Premetto che ho finito poco fa di leggere la guida base sul PHP, quindi perdonatemi se non sono molto afferrato sulla materia.

    Ho una domanda a cui non ho trovato risposta nelle varie guide seguite, ovvero:"Se le richieste ricevute dal server sono simultane, esse vengono eseguite in parallelo o in modo seriale?"

    Mi spiego meglio, sto facendo uno script in easyuo (un programma di scripting per un gioco, ma questo non importa..), e questo puo' inviare dichieste su un indirizzo http ed eseguire il risultato.
    Siccome non possiedo un database, e in qualsiasi caso non so ancora come gestirlo, ho intenzione di memorizzare i dati su un file txt per poi riprenderli quando servono.
    Da questo parte la mia curiosita', ovvero se lo script di easyuo viene eseguiro da piu persone, e in un dato momento mandano la stessa richiesta al server, ed entrambi devono accedere a un file di testo, cosa succede? Viene eseguita una richiesta alla volta?? l'ipotetico puntatore $fp ritorna a un valore particolare se il file e' gia' in uso da un altro processo?

    Spero di essere stato chiaro =(
    Ringrazio in anticipo ^^
    See You
    codice:
     $(".canaglia").show()

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Penso funzioni seguendo la logica dei db.
    Se gli accessi simultanei sono tutti in lettura, il file può essere acceduto da tutti contemporaneamente, se una è in scrittura, appena questa viene accettata, le letture attendono la chiusura del file per poterlo leggere.

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    l'utente che fa accesso al file è sempre uno, il web server percui che tu la richiesta venga eseguita cento volte non dovrebbe esserci problema, ma a mio avviso c'e un margine di corruzione del file molto elevato se non gestito piu che correttamente.
    Secondo me ti conviene migrare almeno verso un db access... anche se esitono soluzioni gratuite come mysql, a meno che tu nn ti stia appoggiando ad un hosting
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    I file di testo usati al posto dei database vanno molto di moda su questo forum, ma sono una pessima idea. Il problema principale e' garantire la coerenza dei dati, e se non implementi correttamente un sistema di locking non c'e' modo di farlo. Inoltre, anche implementando il locking, il tutto e' scomodo, lento e macchinoso.

    Ti faccio un esempio. Supponiamo di avere un guestbook in cui ogni utente puo' scrivere un messaggio, il file di testo non conterra' altro che una serie di righe ognuna delle quali e' il messaggio di un utente.
    Ora, l'utente1 si collega e inserisce il commento: il sistema legge il file di testo, aggiunge la riga e lo salva. Nel frattempo utente2 si collega nel momento che passa tra la lettura e la scrittura di utente1, inserisce il proprio messaggio e il sistema lo salva dopo che utente1 ha salvato il proprio. Cosa succede? Succede che utente2 ha letto lo stesso contenuto che ha letto utente1 e quando utente2 salvera' il suo commento, quello di utente1 sara' perso per sempre.

    codice:
    Contenuto del file di testo all'inizio:
    1: mi piace molto!
    2: non mi piacciono i colori
    3: saluti da mario
    
    utente1 legge
          |
          |          utente2 legge
          |                |
    utente 1 salva (ciao)  |
          |                |
          |         utente 2 salva (bel sito!)
          |                |
    
    
    Contenuto del file di testo PRIMA che utente2 salvi
    1: mi piace molto!
    2: non mi piacciono i colori
    3: saluti da mario
    4: ciao
    
    Contenuto del file di testo alla fine
    1: mi piace molto!
    2: non mi piacciono i colori
    3: saluti da mario
    4: bel sito!
    il commento "ciao" si e' perso nel nulla perche' sovrascritto.

    Per questo si usano i database.

  5. #5
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116
    Originariamente inviato da k.b
    I file di testo usati al posto dei database vanno molto di moda su questo forum, ma sono una pessima idea. Il problema principale e' garantire la coerenza dei dati, e se non implementi correttamente un sistema di locking non c'e' modo di farlo. Inoltre, anche implementando il locking, il tutto e' scomodo, lento e macchinoso.
    ......
    ......
    ......

    Per questo si usano i database.
    E' proprio questo che intendevo, maledizone

    Mi appoggio su Al... vabe' non lo scrivo, non ho ancora letto le direttive e non so se posso citare web o altre cose...

    In qualsiasi caso non possiedo una banca dati, e per cio' che mi serve non e' assolutamente il caso di prenderne uno.

    Ora, messo in chiaro che la cosa non va bene e che c'e' un alto rischio di errore, mi viene in mente una soluzione, un po' macchinosa, ma magari fattibile.

    Ipotizzando che si collechino 3 client che vogliono appoggiarsi su un file di testo (scelgo 3 per comodita', ma possiamo generalizzare con N), ogni client fornisce un nick(ogniuno diverso) e una passwd, all'accesso controllato creano una dir con il nome della passwd, in essa viene creati un file user.txt , file.txt , query.txt e a questo punto termina la prima operazione. Al seconda richiesta si puo' costatare se la cartella e i file sono stati creati, se si si passa alla lettura di user.txt, se in esso non e' presente il proprio username viene scritto in query.txt il proprio nick e si termina l'operazione.
    Al terzo accesso si controlla query.txt e si deve costatare che e' ancora presente il proprio nick e tutti i nick contenuti in user.txt con un identificativo che danno l'ok all'iscrizione, ad esempio:
    codice:
    User3_Query
    User1_Accept_User3
    User2_Accept_User3
    E qui si aprono piu' casi:
    • nel caso in cui l'utente che ha fatto la richiesta non trova il suo nick termina l'esecuzione e aspetta che il file sia vuoto.
    • Se l'utente che ha fatto la richiesta di iscrizione non trova tutti i nick presenti, chiude e ricontrolla successivamente.
    • Se un utente gia' iscritto non trova il suo nick lo reinserisce
    • una votla che tutti i nick sono stati inseriti, l'utente che ha fatto richiesta scrive il suo nick in user.txt e pulisce il file query.txt.


    Va da se che il file query.txt deve essere controllato a ogni accesso, e quando si presenta una richiesta gli utenti iscritti devono attendere il termine dell'iscrizione.

    Terminato questo, per quanto riguardo l'accesso al file.txt lo si fa mediante un contatore posto nella prima riga, ovvero se essa e' vuota nessuno scrive nulla eccetto il primo della lista contenuta in user.txt, terminate le operazioni il primo utente scrive 2 e va via. Da qui in poi ogni utente puo' accedere al file se il numero sopra citato corrisponde alla propria locazione in user.txt, e al termine dell'operazione esso ne incrementa di uno (o lo resetta a 1 se gli utenti sono finiti).

    .... beh, voi che ne pensate?? potrebbe funzionare?
    codice:
     $(".canaglia").show()

  6. #6
    Non ha senso fare tutto quel casino solo per far funzionare una soluzione comunque castrata (sempre che funzioni, non e' che abbia seguito molto bene il filo ). Usa un database, fai molta meno fatica ed hai risultati molto migliori.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.