(PHP 4, PHP 5, PHP 7, PHP 8)
fread — Dosyayı ikil kipte okur
fread() işlevi, dt dosya
tanıtıcısı ile belirtilen dosya akımından uzunluk
bayta kadar veri okur. Okuma işlemi aşağıdaki koşullardan biri sağlanır
sağlanmaz durur:
uzunluk bayt okununca.
Dosya sonuna ulaşılınca.
Bir paket kullanılabilir hale gelince veya soket zaman aşımına uğrayınca (ağ akımları için).
Eğer akım arabelleğe alınmışsa ve düz bir dosyaya ait değilse, en fazla yığıt boyutuna (genellikle 8192) eşit sayıda bayta kadar bir okuma yapılır; önceden arabelleğe alınan verilere bağlı olarak, döndürülen verilerin boyutu yığıt boyutundan daha büyük olabilir.
dtBir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.
uzunlukOkunacak azami bayt sayısı.
Hata durumunda false aksi takdirde okunan dizge döner.
Örnek 1 - Basit bir fread() örneği
<?php
// bir dosyanın içeriğini bir dizge olarak okuyalım
$dosya = "/usr/local/birmetin.txt";
$dt = fopen($dosya, "r");
$içerik = fread($dt, filesize($dosya));
fclose($dt);
?>
Örnek 2 -İkil fread() örneği
İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip bağımsız değişkenine 'b' harfi dahil edilmelidir.
<?php
$dosya = "c:\\files\\birresim.gif";
$dt = fopen($dosya, "rb");
$içerik = fread($dt, filesize($dosya));
fclose($dt);
?>
Örnek 3 - Uzak fread() örnekleri
Okuma işlemi sıradan bir dosyadan değil de popen() ve fsockopen() işlevinden veya uzak dosyalar okunurken dönen akımlardan yapılıyorsa bir paket kullanılabilir hale gelince okuma işlemi durur. Yani, veriyi aşağıdaki örnekte gösterildiği gibi parçalar halinde toplamalısınız.
<?php
$dt = fopen("http://www.example.com/", "rb");
$içerik = stream_get_contents($dt);
fclose($dt);
?><?php
$dt = fopen("http://www.example.com/", "rb");
if (FALSE === $dt) {
exit("URL'ye akım açılamadı");
}
$içerik = '';
while (!feof($dt)) {
$içerik .= fread($dt, 8192);
}
fclose($dt);
?>Bilginize:
İstediğiniz bir dosyanın içeriğini bir dizge olarak almaksa, yukarıdaki koddan çok daha iyi başarım sağlayan file_get_contents() işlevini kullanın.
Bilginize:
fread() işlevinin mevcut dosya konumundan okuduğuna dikkat edin. Dosya konumlayıcının mevcut konumunu öğrenmek için ftell(), konumu dosyanın başına taşımak için rewind()işlevini kullanın.