شبكة تعلم مع ناو

هل يمكن حفظ جلسات PHP في قاعدة البيانات؟

نعم. افتراضيًا تحفظ PHP الجلسات في ملفات، لكن يمكن ضبطها لتحفظها في قاعدة البيانات أو في Redis أو Memcached.

كيف؟

بكتابة معالج جلسات مخصص يطبّق الواجهة SessionHandlerInterface:

class DbSessionHandler implements SessionHandlerInterface {
    // open, close, read, write, destroy, gc
}

session_set_save_handler(new DbSessionHandler($pdo), true);
session_start();

ومع Redis يكفي غالبًا تعديل الإعدادات:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

لماذا نفعل ذلك؟

عندما يعمل الموقع على أكثر من خادم، يجب أن تكون الجلسات في مكان مشترك، وإلا سيخرج المستخدم من حسابه كلما انتقل طلبه لخادم آخر.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.