[Php] session_start () يستغرق وقتا طويلا جدا


Answers

سيكون تخميني روتين تجميع البيانات المهملة ، والذي يتم تشغيله داخل الدالة session_start() الأصلية. ربما قمت بشيء يحافظ على العديد من ملفات الجلسات القديمة ، مثل تغيير وقت الحياة القصوى؟ أو ربما كنت قد قررت أنه من المستحسن تخزينها في قاعدة بيانات ، ولكن نسيت إنشاء فهرس مناسب؟ static GC statine stat () كل ملف جلسة مفرد للتحقق من انتهاء الصلاحية. هذا هو مضيعة للوقت إذا كان هناك الكثير من الملفات المبنية.

تحرير : لمساعدتك في تصحيح الأخطاء فقط ، قم بتعطيل مجموعة البيانات المهملة عن طريق تعيين session.gc-probability مؤقتًا:

session.gc-probability = 0

تأكد من ضبط الإعدادات ، لا أعرف ما الذي قد يفعله إطار zend هنا.

PS من الصعب اقتراح حل دون معرفة السبب. يقصد إجابتي إرشادك نحو تحديد السبب.

Question

يعمل موقع Mys ببطء شديد (وليس لدي أي فكرة عن السبب). هو مستند على تطبيق Zend ، اعتدت أن أجري حول عشرات من هذه المواقع ، لذلك أنا متأكد من أن الكود الخاص بي على ما يرام.

لقد قمت بتثبيت xdebugger على الخادم ، وحاولت التعريف بها وتخمين ما؟ أخذ php :: session_start () 48.675 ثانية. أربعة وأربعون ثانية ونصف! انه لا يصدق! ماذا يمكن أن يكون سبب هذا؟ إنها عملية شائعة ، فلماذا يمكن أن تنفذ فترة طويلة؟ كيفية إصلاح مثل هذا السلوك ، الذي تكوين لتحرير؟ بحثت على جوجل ، لكنها لم تجد إجابة جيدة (في كل مكان تقريبا هناك سؤال ، ولكن لا جواب). شكرا من قبل!




إذا كان لديك العديد من مكالمات ajax المتزامنة على نفس الصفحة فقد يسبب هذا الموقف مشكلتك.




قد يكون أسلوب آخر هو أنك قمت بتعيين memory_limit كبيرة في PHP.ini.

أنا فعلت ذلك لتحميل مقالب mysql ضخمة إلى PHPMyAdmin ووقت التحميل ، ربما (كما ذكرنا سابقا) الكثير من ملفات الجلسات تراكمت الآن أن PHP كان لديها مساحة لتجنيبها. الافتراضي هو 128M ، على ما أعتقد. لقد تضاعفت أربع مرات.




أنا فقط كان عندي هذه القضية. كان session_start يأخذ حوالي 5 ثوان.

كانت مشكلتي قد أعلنت بعض المتغيرات فوقه.

نقلت session_start إلى الأعلى وهو الآن يستغرق بضع ميلي ثانية.




Links