الدالة readfile()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 13:29، 24 أبريل 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

(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 في حال فشلها في جلب الملف.
  • البروتوكولات المدعومة.

مصادر