Parametri dei file di testo in Php
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 è 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
Posta un commento