مشكلة
تحتاج بعض نصوص PHP إلى العمل لفترات طويلة دون انقطاع ، وقد تستمر العملية لفترة طويلة دون انقطاع ولكن يبدو أنها تتوقف عن العمل أو تعرض الخطأ "Connection timeout".
سبب
عندما يقوم البرنامج النصي بإرجاع أي شيء لفترة طويلة ، فإنه يمكن أن يؤدي إلى انقضاء المهلة على الخادم الذي يغلق اتصال العميل. يتم ذلك لمنع نصوص PHP المكتوبة بشكل سيئ من تعطل الخادم.
أيضًا ، عندما يغلق المستخدم اتصالًا (عن طريق إغلاق نافذة ، على سبيل المثال) ، يقاطع خادم الويب (LiteSpeed) معالجة نص PHP هذا عن طريق إيقاف عملية PHP. هذا لتجنب إهدار موارد النظام ولمنع أنواع معينة من هجمات DoS.
في بعض الحالات ، من الأفضل عدم التخلي عن نص PHP ، بغض النظر عما إذا كان الاتصال قد تم إغلاقه أم لا. على سبيل المثال ، تبدأ وظائف WordPress المضمنة وظيفة في الخلفية بإرسال طلب إلى wp-cron.php ثم إغلاق الاتصال فورًا دون انتظار رد. ومع ذلك ، لكي تكتمل مهمة cron ، يجب أن يحافظ خادم الويب على تشغيل محرك PHP دون انقطاع.
للحصول على الوظيفة التي تريدها من تطبيقات الويب الخاصة بك ، قد تحتاج إلى منع انتهاء صلاحية الاتصال وإغلاقه ، ويمكن تجنب ذلك باستخدام متغير noconntimeout و noabort لـ LiteSpeed.
حل
أضف السطر التالي إلى ملف htaccess. :
RewriteRule .* - [E=noabort:1, E=noconntimeout:1]