C'ler karşı PHP'nin feof davranış

0 Cevap php

Ben bir C ve C + + gelen ancak aynı zamanda bazı web şeylerle oynarlar. Hepimiz C millet (umarım) bir FILE* bir okuma yapmadan önce üzerine feof çağıran bir hata olduğunu biliyorum. Bu çok sık C ve C + + için yenilere acıtır şeydir. Bu da PHP'nin uygulanması için durum nedir?

Ben dosyası okuma bitirmeden önce boyutunu bilmek imkansız bir soket veya başka bir şey olabilir, çünkü olmak zorunda rakam. Ama hemen her PHP örneği (hatta php.net Gördüğüm bulunanlar şöyle (ve alarmlar) kafamda çıkmak:

$f = fopen("whatever.txt", "rb");
while(!feof($f)) {
    echo fgets($f);
}
fclose($f);

Ben böyle bu yazmak ve bu sorunu önlemek için tercih olduğunu biliyorum:

$f = fopen("whatever.txt", "rb");
while($line = fgets($f)) {
    echo $line;
}
fclose($f);

ama bu konumuzun dışında. Ben "yanlış yol" yaptım eğer işler başarısız olsaydı test denedim, ama ben yanlış davranışa neden alamadım. Bu tam olarak bilimsel değil, ama bir cami olduğunu düşündüm.

So, is it incorrect to call feof bir fread PHP önce?

Orada PHP farklı olduğunu C sürümünü bu yapmış olabilir yolları bir çift vardır, ama onlar olumsuz yanları var hissediyorum.

  • onlar! EOF'a varsayılan olabilir. Bazı köşe durumlarda için yanlış olabilir, çünkü bu alt-uygunudur.

  • Onlar bir fopen Görüşme sırasında dosya boyutu alabilir, ancak bu tutarsız davranışı verimli, dosya kaynaklarının her türlü işe olamazdı ve yavaş olacaktır.

0 Cevap