learn

رفع خطای max_execution_time وردپرس؛ علت کندی و تنظیم زمان PHP

عدد زمان را بدون بررسی علت افزایش ندهید؛ پردازش سنگین، تنظیم PHP و تایم‌اوت لایه‌های دیگر مسیرهای متفاوتی دارند.

خطای max_execution_time وردپرس یعنی اجرای یک درخواست از زمان مجاز PHP عبور کرده است. پیام Maximum execution time of … seconds exceeded معمولاً عدد محدودیت را نشان می‌دهد. این عدد برای همهٔ هاست‌ها ۳۰ ثانیه نیست و رخداد خطا به‌تنهایی ثابت نمی‌کند افزونه آلوده یا خراب است.

علت خطای max_execution_time وردپرس را پیدا کنید

مشخص کنید خطا هنگام کدام کار رخ می‌دهد: ورود، ساخت خروجی، واردکردن داده، نصب بسته یا درخواست عادی صفحه. زمان و مسیر فایل ثبت‌شده در لاگ را با آخرین تغییرات تطبیق دهید. یک عملیات معتبر اما بزرگ هم ممکن است از حد سرویس عبور کند؛ حذف فوری افزونه تشخیص محسوب نمی‌شود.

در محیط تست، اندازهٔ ورودی را کاهش دهید یا پردازش را به دسته‌های کوچک‌تر تقسیم کنید. حلقهٔ بی‌پایان، پرس‌وجوی نامناسب و سرویس خارجی کند باید جدا بررسی شوند. توقف موقت مؤلفهٔ مشخص برای تشخیص مفید است، اما راه‌حل دائمی باید علت را اصلاح کند.

تفاوت زمان PHP با تایم‌اوت سرور

max_execution_time همهٔ زمان‌های انتظار در زنجیرهٔ درخواست را کنترل نمی‌کند. طبق مستند PHP، در سیستم‌های غیر ویندوز برخی زمان‌های خارج از اجرای اسکریپت در این شمارش لحاظ نمی‌شوند؛ در ویندوز زمان واقعی سنجیده می‌شود. بنابراین زمان روی ساعت لزوماً با عدد پیام برابر نیست.

وب‌سرور، PHP-FPM، پراکسی یا CDN هم ممکن است محدودیت جدا داشته باشند. خطای 504 یا 524 را بدون مشاهدهٔ لاگ، همان خطای زمان PHP فرض نکنید. افزایش مقدار PHP نمی‌تواند همهٔ سقف‌های لایه‌های دیگر را برطرف کند.

افزایش محدود زمان از پنل هاست

اگر بررسی نشان داد عملیات معتبر به زمان بیشتری نیاز دارد، مقدار فعلی را ثبت کنید. در cPanel، ابزار MultiPHP INI Editor را باز و دامنهٔ درست را انتخاب کنید. اگر گزینه در Basic Mode نیست، در صورت مجازبودن از Editor Mode استفاده کنید. نمونهٔ زیر یک مقدار آزمایشی است و توصیهٔ ثابت برای تمام سایت‌ها نیست.

max_execution_time = 120

تنظیم را ذخیره و مقدار مؤثر محیط وب همان دامنه را بررسی کنید. اگر پنل اجازهٔ تغییر نمی‌دهد یا مقدار اعمال نمی‌شود، روش سرویس را از میزبان بپرسید. ساخت php.ini در هر پوشه الزاماً مؤثر نیست و php.ini فایل مخفی محسوب نمی‌شود.

کدام روش‌ها را بی‌دلیل به کار نبریم؟

دستور php_value در .htaccess فقط با روش اجرای سازگار کاربرد دارد و در محیط نامناسب می‌تواند خطای 500 ایجاد کند. پشتیبانی وب‌سرور از .htaccess به‌تنهایی کافی نیست. همچنین افزودن set_time_limit به wp-config.php ممکن است دامنهٔ تغییر را به همهٔ درخواست‌ها گسترش دهد؛ محدودیت را ترجیحاً در محل درست تنظیم کنید.

صفرکردن محدودیت برای نامحدودشدن زمان، جای اصلاح پردازش را نمی‌گیرد. افزایش پیاپی به ۳۰۰ و بیشتر بدون مشاهدهٔ نتیجه هم ممکن است فقط منابع را طولانی‌تر درگیر کند. برای چنین کاری نصب افزونهٔ جانبی ضرورت ندارد.

وقتی سایت یا پیشخوان از دسترس خارج است

این خطا می‌تواند عملکرد واقعی سایت را مختل کند. در صورت دریافت ایمیل معتبر Recovery Mode، از آن برای شناسایی مؤلفه استفاده کنید؛ یا لاگ خصوصی هاست را بخوانید. عیب‌یابی وردپرس را بدون نمایش عمومی اطلاعات حساس انجام دهید.

پس از اصلاح، همان عملیات را با ورودی واقعی تکرار و زمان، نتیجه و لاگ جدید را بررسی کنید. اگر افزایش موقت دیگر لازم نیست، مقدار مناسب سرویس را برگردانید. برای کارهای طولانی، پردازش دسته‌ای یا صف مناسب معمولاً از نگه‌داشتن یک درخواست وب طولانی قابل‌کنترل‌تر است.

مطالعهٔ مرتبط

بازبینی فنی: ۱۳ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شده‌اند.

مطالب مرتبط

ارسال نظر

فهرست مطالب