Visualizzazione risultati 1 fino 6 di 6

Discussione: semafori con permessi nella scrittura di file

  1. #1
    L'avatar di vigile
    vigile non è connesso Utente giovane
    Data registrazione
    06-02-2004
    Residenza
    Napoli
    Messaggi
    65

    Question semafori con permessi nella scrittura di file

    scusate utilizzo altervista e dato che sto sviluppando un portale e attualmente un forum che non fanno uso di database ma si appoggiano su semplici file di testo (alcuni anche abbastanza conosciuti utilizzano file xlm) ora per quanto riguarda l'integrità dei file in scrittura con fwrite aperto con fopen e parametro a non vi sono problemi perche il file non viene cancellato e le nuove notizie vengono solo accodate.

    In questo caso non ci sono problemi in caso di richieste contemporanee in quanto puo accadere che un inserimento non vada a buon fine (fin ora a me non è ancora capitato)

    Il problema sorge quando il file viene letto (i suai valori caricati in array o variabili) poi aperto con parametro "w" che come sappiamo cancella il file per inserire il contenuto processato da php nel file in modo da modificare quanto gia inserito, ed in caso di sovrapposizione di richieste il contenuto del file può andare perduto.

    Per questo esistono i semafori in php esempio con le funzioni sem_acquire,
    sem_..ect

    ora se non sbaglio (nel qual caso correggetemi) su altervista ciò non è possibile.

    Quello che vi chiedo: qualcuno conosce qualche funzione, classe, trucco per sopperire a tale mancanza?
    Grande...
    Un CMS (contenitore di dati) portale completo che funge senza database Sql.
    Ottimo su ALTERVISTA in quanto non richiede altercent ed abilitazioni Database Sql. Tutti possono avere da subito e GRATIS il loro portale personale.

    Tutto ciò dove Ma su vigilenapoletano

  2. #2
    L'avatar di vigile
    vigile non è connesso Utente giovane
    Data registrazione
    06-02-2004
    Residenza
    Napoli
    Messaggi
    65

    Predefinito

    C'è qualcuno che ha notizie?
    Grande...
    Un CMS (contenitore di dati) portale completo che funge senza database Sql.
    Ottimo su ALTERVISTA in quanto non richiede altercent ed abilitazioni Database Sql. Tutti possono avere da subito e GRATIS il loro portale personale.

    Tutto ciò dove Ma su vigilenapoletano

  3. #3
    Guest

    Predefinito

    Non sono sicurissimo di quello che sto dicendo ma, credo, gli script in php vengono eseguiti in multiprocesso. Se cosi fosse usa semplicemente flock() (vedi http://it.php.net/manual/en/function.flock.php ).
    Nel caso, che è opportuno indagare, di un ambiente multithreading la soluzione del file locking non funzionerebbe: i thread di una stessa istanza di processo non sono bloccati dal lock! In questo caso potresti tentare di creare un lock attraverso una directory, come spiegato all'URL riportato mkdir() e symlink() sono le uniche operazioni garantite atomiche. Anche così si tratta di operazioni delicate: se crei un lock attraverso directory devi poi liberare la risorsa; inoltre bisogna evitare i lock bloccanti, altrimenti la pagina web potrebbe risultare incompleta o piena di messaggi di errore a causa di un timeout.

  4. #4
    L'avatar di vigile
    vigile non è connesso Utente giovane
    Data registrazione
    06-02-2004
    Residenza
    Napoli
    Messaggi
    65

    Predefinito

    Benissimo flock è utilizzabile su altervista?

    se non ricordo male anche flock non può essere usato su Av.

    Desidererei una conferma.

    Grazie!
    Grande...
    Un CMS (contenitore di dati) portale completo che funge senza database Sql.
    Ottimo su ALTERVISTA in quanto non richiede altercent ed abilitazioni Database Sql. Tutti possono avere da subito e GRATIS il loro portale personale.

    Tutto ciò dove Ma su vigilenapoletano

  5. #5
    L'avatar di marcio
    marcio non è connesso AlterGuru 2500
    Data registrazione
    17-08-2003
    Residenza
    Palermo
    Messaggi
    3,300

    Predefinito

    Approfitto di questo 3d per farti i complimenti per il portale che stai creando e per la lincenza con cui l'hai rilasciato!bravo!

  6. #6
    Guest

    Predefinito

    Su AV si può usare flock(). Ti consiglio di fare comunque attenzione: è molto facile avere dei file corrotti o addirittura troncati.
    Nel caso l'interprete php sia in esecuzione non come modulo ma come CGI e l'utente interrompa lo script, facendo uno stop o un refresh della pagina mentre è in esecuzione un fwrite, si potrebbero avere dei file corrotti.
    Per andare sul sicuro, inoltre, è bene forzare lo svuotamento del buffer , chiamando fflush(), prima del rilascio del lock, onde evitare un troncamento dovuto alla scrittura sul file da parte di un processo in attesa, prima della chiamata di fclose() nello script.

Regole di scrittura

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