Parametri dei file di testo in Php


Esistenza di un file
La funzione
file_exists (string nomefile)
permette di controllare che il file specificato esista. Nel caso in cui il file esistesse il valore restituito dalla funzione sarebbe un boolean vero.




Apertura di un file
Viene eseguita attraverso la funzione
fopen (string nomefile, string modo)
dove nomefile è il nome del file
         modo può assumere uno dei seguenti valori:
           
r
sola lettura               

r+
lettura e scrittura       

w
sola scrittura: il contenuto precedente viene perso
**
w+
lettura e scrittura, ma perdendo il contenuto
**
a
solo per aggiunta (modalità append)
**
a+
per lettura e aggiunta
**
b
per trattare il file come file binario

** se il file non esiste, il motore PHP tenta di crearlo

Esempio di utilizzo della funzione fopen()
$fp=fopen(“miofile.txt”,”r”);
Nel caso il cui l’apertura del file non andasse a buon fine, il valore del puntatore assumerebbe valore zero.

Esempio di apertura file con controllo della sua esistenza

<?php
$nomefile="miofile.txt";
if (file_exists($nomefile))
            {
            $idfile=fopen($nomefile, "r");
            //Controlla che il file sia stato aperto in modo corretto,
            //in caso contrario blocca lo script mandando a video un messaggio
            //attraverso l'utilizzo di die()
            if (!$idfile) die ("Il file $nomefile non &egrave; stato aperto<BR>");
            $messaggio="Apertura del file $nomefile<BR>";
            }
else
            {
            $messaggio="Il file $nomefile non esiste<BR>";
            }
echo $messaggio;
?>

Lettura di una riga
La funzione
fgets(identificatore_del_file [, int lunghezza])
legge una riga da un file.

Dimensione del file

La funzione
            filesize (string nomefile)
restituisce un valore intero che indica la dimensione in byte del file (se il file non esiste la funzione restituisce false).

Condivisione di un file
Con PHP è possibile fare in modo di sincronizzare l’accesso ad un file. PHP mette a disposizione un meccanismo di sincronizzazione basato su due funzioni lock e unlock.
Per implementare un meccanismo di sincronizzazione su un file, occorre ricordare che:
-          quando un processo accede in scrittura ad un file, la risorsa deve essere allocata in modo esclusivo a tale processo (locked);
-          se due o più processi devono accedere i lettura ad un file, la risorsa può essere condivisa tra tale processi (shared).
La funzione che permette di implementare tale meccanismo è:
            flock (int fp, int modo)
dove fp è il puntatore al file (pertanto la funzione deve essere usata in combinazione con fopen())
         modo è un valore intero come riportato in tabella:

Valore
Costante predefinita
Modalità
Descrizione
1
LOCK_SH
Condivisa - shared
Per operazioni di lettura
2
LOCK_EX
Esclusiva – locked
Per operazioni di scrittura
3
LOCK_UN
Unlock
Rilascia la risorsa
4
LOCK_NB
Disabilita il semaforo
Realizza un lock non bloccante

La funzione ritorna un valore booleano che vale true se ha avuto successo, false in caso di errore.

Esempio di utilizzo in caso di operazioni di lettura

//operazioni di lettura
$fp=fopen($nomefile,"r");
flock($fp, LOCK_SH);         //blocca il file condiviso

            //operazioni di lettura
           
flock($fp, LOCK_UN);         //sblocca il file
fclose($fp);


Esempio di utilizzo in caso di operazioni di scrittura

//operazioni di scrittura
$fp=fopen($nomefile,"r+");
flock($fp, LOCK_EX);         //blocca il file esclusivo

            //operazioni di scrittura
           
flock($fp, LOCK_UN);         //sblocca il file
fclose($fp);


Commenti