الدالة readfile() في PHP
(PHP 4, PHP 5, PHP 7)
تقرأ الدالة readfile() من ملف معيَّن وتُظهر محتواه.
الوصف
int readfile ( string $filename [, bool $use_include_path = FALSE [, resource $context ]] )
تقرأ هذه الدالة كامل محتوى الملف ثمَّ تكتب محتواه على مخزن الخرج (مجرى الخرج القياسي).
المعاملات
filename
اسم الملف المراد قراءته.
use_include_path
يمكنك استعمال هذا المعامل الاختياري بتمرير القيمة TRUE إن أردت البحث عن الملف في المسار المُضمَّن include_path أيضًا.
context
مورد مجرى المحتوى.
القيم المعادة
يُعاد عدد البايتات التي قُرأت من الملف. إن حصل أي خطأ، فستُعاد القيمة FALSE إلا إذا استُدعيت الدالة بالشكل @readfile()، فستُطبع رسالة الخطأ حينئذٍ.
أمثلة
المثال 1: إجبار عمليَّة التنزيل باستعمال الدالة readfile()
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
سيُظهر المثال السابق نتيجة مشابهة لما موضح في الصورة:
ملاحظات
- لن تُظهر الدالة
readfile()أيَّ مشكلات تتعلق بالذاكرة، حتى عندما تقرأ ملفات كبيرة الحجم. إن كنت تواجه خطأ يتعلق بنفاد الذاكرة، فتأكَّد من إيقاف ذاكرة تخزين الخرج باستعمال الدالةob_get_level().
فائدة: يمكن استعمال عنوان URL مع المعامل filename، أي عوضًا عن اسم الملف، شرط أن يُفعَّل الضبط "fopen wrapper". راجع صفحة الدالة fopen() للمزيد من التفاصيل حول كيفيَّة تحديد الملف.
- أُضيف دعم المحتوى منذ إصدار PHP 5.0.0. راجع قسم المجرى (stream) للمزيد من الشرح عن المحتوى (context).
انظر أيضًا
- الدالة
file(): تقرأ الملف بأكمله ثمَّ تضع محتوياته في مصفوفة. - الدالة
fopen(): تفتح ملفًا أو عنوان URL. - الدالة
file_get_contents(): تقرأ الملف ثمَّ تضع كلَّ محتوياته في سلسلة نصيَّة. - الدالة
fpassthru(): تُظهر ما تبقَّى من محتويات الملف. - الدالة
virtual(): تنفِّذ طلبًا فرعيًّا للخادم Apache. - العبارة
include: تعمل على تضمين ومعالجة ملف محدَّد. - العبارة
require: تطابق العبارةincludeباستثناء أنّها تطلق خطأ من نوعE_COMPLE_ERRORفي حال فشلها في جلب الملف. - البروتوكولات المدعومة.