الفرق بين المراجعتين ل"PHP/session gc"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
سطر 82: سطر 82:
 
== مصادر ==
 
== مصادر ==
 
* [http://php.net/manual/en/function.session-gc.php صفحة الدالة session_gc في توثيق PHP الرسمي.]
 
* [http://php.net/manual/en/function.session-gc.php صفحة الدالة session_gc في توثيق PHP الرسمي.]
 +
[[تصنيف:PHP]]
 +
[[تصنيف:PHP Session]]

مراجعة 18:40، 26 يوليو 2018

(PHP 7, PHP 7.1.0)

تجمع الدالة session_gc()‎ البيانات المُهملة garbage data)‎) .

الوصف

int session_gc ( void )

تجمع الدالة ()session_gc البيانات المُهملة (garbage data) . تعمل PHP على تجميع البيانات المُهملة افتراضيًا طِبقًا لاحتمالات افتراضية على الجلسة.

تِلك الإحتمالات تعمل بشكل جيد إلى حد ما ولكن يوجد بعض المشاكل:

  1. المواقع ذات مرور المُستخدمين المُنخفض قد لا يُحذف فيها البيانات المُهملة في فترة زمنية مُناسبة
  2. المواقع ذات مرور المستخدمين العادي قد تتكرر بها البيانات المُهملة ولا يتم حذفها
  3. تُجمع البيانات المُهملة طِبقًا لطلب المُستخدم مِما قد يُسبب تأخير في جمع البيانات المُهملة

لِذلك يُقترح تنفيذ دالة تجميع البيانات المُهملة دوريًا في أنظمة الإنتاج مِثل "cron" في الأنظمة شبيهة UNIX، وتأكد من عدم تفعيل الاحتمالات الافتراضية لجمع البيانات المُهملة عن طريق ضبط session.gc_probability إلى القيمة 0.

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

تُعيد الدالة session_gc()‎ عدد الملفات التي تم حذفها في حالة نجاحها والقيمة FALSE في حالة فشلها.

في حالة استخدام معاملات حفظ الملفات القديمة، لا تُعيد عدد الملفات المحذوفة، وإنما فقط علامات الفشل/النجاح. في هذه الحالة يُعاد رقم واحد في حالة نجاح الدالة مهما كان عدد الملفات المحذوفة.   

أمثلة

المثال 1: شرح استخدام الدالة في حالة مُدير المهام مِثل "cron"

<?php

// يجب أن ينفذ الكود في نفس الخادوم المُستخدم
// يجب بداية الجلسة النشطة للولوج إلى مخازن البيانات

session_start();

// بدء جمع البيانات المُهملة في الحال

session_gc();

// مسح عنوان الجلسة الافتراضي الذي تم عمله بواسطة جامع البيانات المُهملة

session_destroy();

?>

المثال 2: استخدام الدالة للأكواد القابلة للولوج عن طريق المُستخدم

<?php

// لاحظ أنه يُفضل استخدام الدالة بواسطة مُدير المهام ولكن يُمكن استخدامها كالآتي 

$gc_time = '/tmp/php_session_last_gc';

$gc_period = 1800;

session_start();

// يقوم بتنفيذ جامع البيانات المُهملة عند انتهاء مُدة جامع البيانات //الافتراضي 

if (file_exists($gc_time)) {

    if (filemtime($gc_time) < time() - $gc_period) {

        session_gc();

        touch($gc_time);

    }

} else {

    touch($gc_time);

}

?>

انظر أيضًا

مصادر