منع LiteSpeed من قطع سكربتات PHP الطويلة
استخدم متغيّرَي noabort وnoconntimeout في .htaccess كي تكتمل النسخ الاحتياطية والاستيرادات وWP-Cron بدل أن تُقتَل في منتصفها.
بعض سكربتات PHP تعمل دقائق بحق — نسخ احتياطية كاملة، واستيرادات كبيرة، وإعادة بناء فهارس قواعد البيانات، ومهام WP-Cron. وLiteSpeed يوقف الطلبات الطويلة أو الصامتة افتراضيًا، فقد يقتلها في منتصفها. ينطبق على كل الاستضافة المشتركة والموزِّعة، التي تعمل بـ LiteSpeed.
وحمايتان منفصلتان تسبّبان هذا، وتحتاجان علاجين مختلفين. ومعظم السكربتات الطويلة تحتاج الاثنين.
| المتغيّر | يمنع LiteSpeed من | يُحتاج حين |
|---|---|---|
noabort | قتل PHP حين يُغلَق اتصال الزائر | يُبدأ السكربت ثم يُترَك، كما يفعل WP-Cron |
noconntimeout | إغلاق اتصال لم يُرسل شيئًا منذ مدة طويلة | يعمل السكربت طويلًا قبل أن ينتج مخرجات |
وكلاهما خاص بـ LiteSpeed ويجب تغليفهما في كتلة IfModule كي تُتجاهَل القواعد
على أي خادم ويب آخر.
اضبطهما في .htaccess
أضف هذا إلى ملف .htaccess في الجذر المستنَدي لموقعك:
<IfModule Litespeed>
SetEnvIf Request_URI "(wp-cron|backupbuddy|importbuddy)\.php" noabort noconntimeout
</IfModule>وذلك يستهدف السكربتات الثلاثة الأكثر تأثرًا. استبدل الأسماء بما يسمّى به سكربتك الطويل.
ولتطبيقه على كل طلب في الموقع بدلًا من ذلك:
<IfModule Litespeed>
SetEnv noabort 1
SetEnv noconntimeout 1
</IfModule>تطبيق هذا على كل طلب يزيل الحماية التي توقف سكربتًا شاردًا عن استهلاك الموارد إلى ما لا نهاية. وعلى الاستضافة المشتركة يُحسب ذلك على حدود حسابك. استهدف السكربتات المحدّدة التي تحتاجه.
فضّل SetEnv على قواعد إعادة الكتابة
يمكن بلوغ النتيجة نفسها بأعلام إعادة الكتابة:
<IfModule Litespeed>
RewriteEngine On
RewriteRule (wp-cron|backupbuddy|importbuddy)\.php - [E=noabort:1,E=noconntimeout:1]
</IfModule>واستخدم SetEnv وSetEnvIf بدلًا منها حيثما أمكن. فقواعد إعادة الكتابة حسّاسة
لموضعها بالنسبة إلى القواعد الأخرى — وكتلة إعادة الكتابة الخاصة بووردبريس
خصوصًا — فالقاعدة الموضوعة بعد كتلة ووردبريس قد لا تُبلَغ أبدًا. أما SetEnv
فيمكن وضعه في أي مكان في الملف.
ولا تستخدم النهجين معًا للسكربت نفسه.
حدّ PHP نفسه يظل ساريًا
هذان المتغيّران يتحكّمان في LiteSpeed. ولـ PHP حدّ منفصل، وقد يظل يوقف سكربتًا:
max_execution_time = 300اضبطه في MultiPHP INI Editor داخل cPanel. راجع إصدارات PHP وإعداداتها.
فإن توقّف سكربت عند وقت ثابت — 30 ثانية أو 60 بالضبط — فذلك حدّ PHP دائمًا تقريبًا لا حدّ LiteSpeed.
قبل أن تلجأ إلى هذا
السكربت الذي يحتاج دقائق عَرَض غالبًا لا متطلَّب.
- WP-Cron استبداله بمهمة cron حقيقية أفضل من إبقائه حيًا. فـ cron في النظام يستدعي WP-CLI أوثق ولا يعتمد على وصول زائر.
- نسخ الإضافات الاحتياطية تكتب نسخًا كاملة من الموقع داخل حصة قرصك، ويزيلها تنظيف WebGee. استخدم JetBackup بدلًا منها — راجع الملفات التي تحذفها WebGee تلقائيًا.
تحقّق
شغّل السكربت وتأكّد من اكتماله. فإن ظل يتوقف، فافحص إن كان يتوقف عند وقت ثابت —
فذلك يشير إلى max_execution_time لا إلى LiteSpeed.
اقرأ أيضًا
تحسين لوحة ووردبريس أو WooCommerce البطيئة
اعرف ما يبطّئ wp-admin فعلًا، ثم أصلحه — بالترتيب الذي يجد السبب أسرع لا بقائمة من كل ما هو ممكن.
تحسين قاعدة بيانات ووردبريس
امسح مراجعات المقالات والمسودات التلقائية والسبام والقيم المؤقتة بأداة Database Optimizer في LiteSpeed، واعرف أي الخيارات آمنة التشغيل.