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

من موسوعة حسوب
< PHP

(PHP 4, PHP 5, PHP 7)

تعيد الدالة stat()‎ معلومات عن ملف محدَّد.

الوصف

array stat ( string $filename )

تجمع هذه الدالة بعض المعلومات الإحصائيَّة عن الملف filename. إن كان الملف filename وصلة رمزيَّة، فستعاد معلومات إحصائيَّة عن الملف ذاته الذي تشير إليه الوصلة وليست عن الوصلة الرمزيَّة تلك.

الدالة lstat()‎ مطابقة تمامًا للدالة stat()‎ باستثناء أنَّها تعيد معلومات إحصائيَّة عن الوصلات الرمزيَّة أيضًا.

المعاملات

filename

مسار الملف المراد جلب معلومات عنه.

القيم المعادة

يوضِّح الجدول التالي تنسيق المصفوفة التي ستعيدها الدالة stat()‎ والدالة fstat()‎:

الرقم الارتباط الوصف
0 dev رقم الجهاز.
1 ino رقم مؤشِّر الفهرسة (inode).*
2 mode وضع حماية مؤشِّر الفهرسة.
3 nlink عدد الوصلات.
4 uid معرِّف المستخدم المالك.*
5 gid معرِّف المجموعة المالكة.*
6 rdev نوع الجهاز إن كان مؤشِّر الفرسة جهازًا.
7 size الحجم بالبايت.
8 atime وقت آخر وصول (يكون على شكل بصمة وقت يونكس [Unix timestamp]).
9 mtime وقت آخر تعديل (يكون على شكل بصمة وقت يونكس [Unix timestamp]).
10 ctime وقت آخر تعديل جرى على مؤشِّر الفهرسة (يكون على شكل بصمة وقت يونكس [Unix timestamp]).
11 blksize حجم كتلة نظام الملفات.**
12 blocks عدد الكتل المحجوزة من أصل 512 بايت.**

* ستكون قيمتها على ويندوز 0 دومًا.

** ستُعاد قيمة صحيحة على الأنظمة التي تدعم النوع st_blksize؛ أمَّا الأنظمة التي لاتدعمها (مثل ويندوز)، فستُعاد القيمة ‎-1.

ستعيد الدالة stat()‎ القيمة FALSE حال وجود خطأ.

ملاحظة: لمَّا كان نوع الأعداد الصحيحة في PHP هو ذات إشارة (signed) وأغلب المنصات تستعمل الأعداد الصحيحة بطول 32 بت، فقد تعيد بعض دوال نظام الملفات نتائج مخالفة للتوقعات عند استعمالها مع ملفات ذات حجم أكبر من 2 غيغابايت.

الأخطاء والاستثناءات

سيُصدَر تحذير من المستوى E_WARNING عند فشل الدالة.

أمثلة

المثال 1: استعمال الدالة stat()‎

<?php
// جلب معلومات الملف التالي
$stat = stat('C:\php\php.exe');

/*
 * طباعة وقت الوصول للملف، وهذا مشابه تمامًا 
 * fileatime() لاستدعاء الدالة
 */
echo 'Access time: ' . $stat['atime'];

/*
 * طباعة وقت تعديل الملف، وهذا مشابه تمامًا 
 * filemtime() لاستدعاء الدالة
 */
echo 'Modification time: ' . $stat['mtime'];

// طباعة رقم الجهاز
echo 'Device number: ' . $stat['dev'];
?>

المثال 2: استعمال المعلومات التي تعيدها الدالة stat()‎ مع الدالة touch()‎

<?php
// جلب معلومات الملف التالي
$stat = stat('C:\php\php.exe');

// هل سنفشل في جلب المعلومات عند استدعاء الدالة؟
if (!$stat) {
    echo 'stat() call failed...';
} else {
    /*
     * نريد تعديل وقت الوصول ليكون أسبوعًا واحدًا 
     * بدءًا من الوقت الوصول الحالي
     */
    $atime = $stat['atime'] + 604800;

    // ضبط وقت الوصول للملف
    if (!touch('some_file.txt', time(), $atime)) {
        echo 'Failed to touch file...';
    } else {
        echo 'touch() returned success...';
    }
}
?>

ملاحظات

  • الجدير بالملاحظة أنَّ دقَّة الوقت قد تختلف من نظام ملفات إلى آخر.
  • ستُخزَّن نتيجة هذه الدالة. راجع صفحة الدالة clearstatcache()‎ للمزيد من التفاصيل.

فائدة: يمكن أن تُستعمل هذه الدالة بدءًا من إصدار PHP 5.0.0 مع بعض بروتوكلات الروابط (URL wrappers).

انظر أيضًا

  • الدالة lstat()‎: تعيد معلومات عن ملف أو وصلة رمزيَّة.
  • الدالة fstat()‎: تعيد معلومات عن ملف باستعمال مؤشِّر ملف مفتوح يشير إليه.
  • الدالة filemtime()‎: تجلب آخر وقت جرى فيه تعديل الملف.
  • الدالة filegroup()‎: تعيد المجموعة المالكة للملف.

مصادر