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

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

(PHP 4, PHP 5, PHP 7)

تمسح الدالة clearstatcache()‎ حالة الملف المُخزَّنة.

الوصف

void clearstatcache ([ bool $clear_realpath_cache = FALSE [, string$filename ]] )

تُخزِّن PHP المعلومات التي تعيدها بعض الدوال المُستخدمة مثل الدالة stat()‎ والدالة lstat()‎، أو أي دالة من الدوال المذكورة في الأسفل، وذلك من أجل رفع الأداء؛ لكن قد تضطر في بعض الحالات إلى مسح تلك المعلومات المخزَّنة. إن تحققنا من حالة ملفٍ ما عدَّة مرات في سكربت واحد، وكان ذلك الملف عرضةً للحذف أو النقل خلال عمل هذا السكربت، فربما تختار حينئذٍ مسح ذاكرة تخزين الحالة (status cache). تستطيع في مثل هذه الحالات استعمال الدالة clearstatcache()‎ لمسح المعلومات التي خَزَّنتها PHP عن الملف.

يجب لفت انتباهك إلى أنَّ PHP لا تُخزِّن معلومات عن ملفات غير موجودة. إذا استَدعيت مثلًا الدالة file_exists()‎ مستعملًا ملفًا غير موجود، فستعيد القيمة FALSE حتى تُنشئ ذاك الملف. وفي حال إنشاء الملف، فستعيد الدالة القيمة TRUE حتى إن حَذفت ذلك الملف. على أي حال، تمسح الدالة unlink()‎ ذاكرة التخزين تلقائيًّا.

ملاحظة: تُخزِّن هذه الدالة معلومات عن أسماء ملفات محدَّدة، لذا تحتاج إلى استدعاء الدالة clearstatcache()‎ فقط إن كنت تُجري عدَّة عمليات على الملف ذاته واحتجت أن لا تُخزَّن المعلومات عن ذلك الملف.

الدوال المتأثرة من عمل هذه الدالة هي الدالة stat()‎، والدالة lstat()‎، والدالة file_exists()‎، والدالة is_writable()‎، والدالةis_readable()‎، والدالة is_executable()‎، والدالة is_file()‎، والدالة is_dir()‎ والدالة is_link()‎، والدالة filectime()‎، والدالة fileatime()‎، والدالة filemtime()‎، والدالة fileinode()‎، والدالة filegroup()‎، والدالة fileowner()‎، والدالة filesize()‎، والدالة filetype()‎، والدالة fileperms()‎.

المعاملات

clear_realpath_cache

معامل اختياري. يحدِّد إن كنت تريد مسح ذاكرة تخزين المسار الحقيقي (realpath cache) أو لا.

filename

معامل اختياري. يُستعمل لمسح ذاكرة تخزين المسار الحقيقي والحالة من أجل اسم ملف محدَّد فقط. لا يٌستعمل إلا إن كانت قيمة المعامل clear_realpath_cache هي TRUE فقط.

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

لا توجد قيم مُعادة.

سجل التغييرات

الإصدار الوصف
5.3.0 إضافة المعامل clear_realpath_cache والمعامل filename الاختياريَّين.

أمثلة

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

<?php
$file = 'output_log.txt';

function get_owner($file)
{
    $stat = stat($file);
    $user = posix_getpwuid($stat['uid']);
    return $user['name'];
}

$format = "UID @ %s: %s\n";

printf($format, date('r'), get_owner($file));

chown($file, 'ross');
printf($format, date('r'), get_owner($file));

clearstatcache();
printf($format, date('r'), get_owner($file));
?>

سيُظهر المثال السابق نتيجة شبيهة بالتالي:

UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross

مصادر