شرح صفوف ومحتوى الفقرة
اختيار وضع الفتح الصحيح في fopen() يحمي البيانات الحالية من المسح غير المقصود ويمنح السكريبت تحكماً دقيقاً بالمؤشر.
- فضّل الوضع
"c+"على"w+"عند دمج تصفير الملف معflock()حتى لا ترى العمليات المنتظرة ملفاً ممسوحاً قبل القفل. - استخدم الوضع
"a"لسجلات الأحداث والأخطاء لأن نظام التشغيل يفرض إلحاق كل كتابة في نهاية الملف بغض النظر عنfseek(). - اربط دائماً كل استدعاء
fopen()بالدالةfclose($fp)لتحرير مقابض الملفات في نظام التشغيل فوراً.
تفحص الدالة stream_get_meta_data($fp) وضع المجرى النشط، وتقرأ stream_get_contents($fp) كامل البايتات المتبقية من موقع المؤشر.
| الوضع | القراءة / الكتابة | موقع المؤشر الابتدائي | إذا كان الملف موجوداً / مفقوداً |
|---|---|---|---|
"r" / "r+" | Read / Read+Write | Byte 0 (Start) | Keeps content / Fails (false) |
"w" / "w+" | Write / Read+Write | Byte 0 (Start) | Truncates to 0 / Creates file |
"a" / "a+" | Append / Read+Append | EOF (End of file) | Keeps content / Creates file |
"x" / "c+" | Create / Safe R+W | Byte 0 (Start) | x fails if exists / c+ keeps content |
<?php
$fp = fopen('php://temp', 'w+');
fwrite($fp, "STREAM_OK");
rewind($fp);
$meta = stream_get_meta_data($fp);
$content = stream_get_contents($fp);
echo $meta['mode'] . " -> " . $content . "\n";
fclose($fp);
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
اختيار وضع الفتح الصحيح في fopen() يحمي البيانات الحالية من المسح غير المقصود ويمنح السكريبت تحكماً دقيقاً بالمؤشر. فضّل الوضع "c+" على "w+" عند دمج تصفير الملف مع flock() حتى لا ترى العمليات المنتظرة ملفاً ممسوحاً قبل القفل. استخدم الوضع "a" لسجلات الأحداث والأخطاء لأن نظام التشغيل يفرض إلحاق كل كتابة في نهاية الملف بغض النظر عن fseek(). اربط دائماً كل استدعاء fopen() بالدالة fclose($fp) لتحرير مقابض الملفات في نظام التشغيل فوراً.