fread

(PHP 3, PHP 4 , PHP 5)

fread -- Legge un file salvaguardando la corrispondenza binaria

Descrizione

string fread ( resource handle, int length)

fread() legge fino a length byte dal puntatore al file indicato da handle. La lettura finisce quando sono stati letti length byte o è stata raggiunta EOF, o (nel caso di flussi via rete) quando un pacchetto divnta disponibile, in base a quale evento accada prima.

<?php
// copia il contenuto di un file in una stringa
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Avvertimento

Sui sistemi che differenziano fra file di testo e binari (ad esempio Windows) il file deve essere aperto con il parametro mode di fopen() impostato a 'b'.

<?php
$filename
= "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Avvertimento

Quando si ricevono dati via rete o pipe, tipo quelli ottenuti leggendo da file remoti o da popen() e proc_open(), la lettura si fermerà dopo avere ricevuto il pacchetto disponibile. Questo significa che i dati sono ricevuti a blocchi che devono essere raggruppati, come illustrato nell'esempio seguente.

<?php
$handle
= fopen("http://www.example.com/", "rb");
$contents = "";
do {
    
$data = fread($handle, 8192);
    if (
strlen($data) == 0) {
        break;
    }
    
$contents .= $data;
} while (
true);
fclose($handle);
?>

Nota: L'esempio precedente ottiene migliori performance rispetto al tradizionale approccio tramite while(!feof()), poichè si risparmia l'overhead della chiamata per la funzione di iterazione.

Nota: Se si desidera ottenere il contenuto del file in una stringa, utilizzare la funzione file_get_contents() la quale è ancora più performante del codice precedente.

Vedere anche fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file() e fpassthru().