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

    Bloccare un file in lettura

    Salve, ho il seguente problema che cercherò di spiegare in modo facile.
    Ho creato un semplice contatore di visite per il sito che consiste nell'aprire un file txt, leggere il valore, incrementarlo di 1 e riscriverlo all'interno del file stesso.
    Il problema è, che se due navigatori dovessero accedere al file txt nello stesso tempo, il contatore perderebbe efficacia in quanto leggerebbero e scriverebbero entrambi lo stesso valore.
    Dal momento che il mio sito non è molto visitato, la possibilità che due navigatori si colleghino nello stesso tempo, è alquanto remota.
    Spesso, però, il mio sito è controllato da diversi spider che caricano la homepage un sacco di volte al secondo creandomi casini con il conteggio dei visitatori.
    Se nel file txt vi è il numero 41 e due spider si collegano al mio sito, dovrei trovare il numero 43; purtroppo alcune volte non trovo alcun numero, altre volte trovo il numero 4243 che mi lascia intendere che il codice php abbia scritto i due valori consecutivamente ottenendo un valore non corretto.
    Vorrei fare in modo che mentre un navigatore stia leggendo, incrementando e scrivendo il valore, l'altro venga messo in attesa.
    Mi sapete dire come possoo fare.
    Spero di essere stata chiara.
    Grazie.
    Ms.

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, il tuo problema si può risolvere con l'utilizzo dei lock per un file. Qui trovi il manuale ufficiale della funzione flock() che ti permette questo, qui invece un pratico esempio con spiegazione di possibili utilizzi della funzione, tutto in inglese ovviamente Spero ti siano d'aiuto

  3. #3
    Forse sono stata un pò frettolosa, pensavo che l'istruzione flock() bloccasse i file soltanto in scrittura ma mi sembra che ne può bloccare anche la lettura.
    Studierò!!
    Grazie mille.
    Ms.

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.