شرح صفوف ومحتوى الفقرة
عند معالجة ملفات السجلات الضخمة، تتيح القراءة المتدفقة سطراً بسطر عبر fgets() الحفاظ على استهلاك الذاكرة ثابتاً ومنخفضاً.
- تقرأ الدالة
fgets($fp)البايتات من موقع المؤشر الحالي حتى محرف السطر الجديد\nالتالي أو نهاية الملف. - فحص الشرط
($line = fgets($fp)) !== falseداخل حلقةwhileهو الأسلوب الأدق للمرور على جميع الأسطر حتى النهاية. - تتحقق الدالة
feof($fp)مما إذا كان مؤشر الملف قد وصل إلى علامة نهاية الملف (EOF) بعد انتهاء القراءة.
تقرأ حلقة while ثلاثة أسطر بالتتابع عبر fgets()، وتؤكد feof($fp) وصول المؤشر إلى نهاية المجرى.
PHP
<?php
$fp = fopen('php://memory', 'r+');
fwrite($fp, "INFO: Boot\nWARN: Disk\nINFO: Ready\n");
rewind($fp);
$count = 0;
while (($line = fgets($fp)) !== false) {
$count++;
}
echo "Lines: $count | EOF: " . (feof($fp) ? 'yes' : 'no') . "\n";
fclose($fp);