الفرق بين المراجعتين لصفحة: «PHP/session gc»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 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 على تجميع البيانات المُهملة افتراضيًا طِبقًا لاحتمالات افتراضية على الجلسة.
تِلك الإحتمالات تعمل بشكل جيد إلى حد ما ولكن يوجد بعض المشاكل:
- المواقع ذات مرور المُستخدمين المُنخفض قد لا يُحذف فيها البيانات المُهملة في فترة زمنية مُناسبة
- المواقع ذات مرور المستخدمين العادي قد تتكرر بها البيانات المُهملة ولا يتم حذفها
- تُجمع البيانات المُهملة طِبقًا لطلب المُستخدم مِما قد يُسبب تأخير في جمع البيانات المُهملة
لِذلك يُقترح تنفيذ دالة تجميع البيانات المُهملة دوريًا في أنظمة الإنتاج مِثل "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);
}
?>
انظر أيضًا
- الدالة
session_start()
: تبدأ جلسة جديدة أو تستكمل جلسة موجودة. - الدالة
session_destroy()
: تمسح جميع البيانات المُسجلة في الجلسة. session.gc_probability