آیا با خطای Fatal error: Maximum execution time of 30 seconds exceeded در وردپرس مواجه شدین؟ نگران نباشین! تو این مقاله ۳ تا روش سریع و تستشده برای رفع این خطای رو اعصاب رو بهتون یاد میدم که حتی اگه تازهکار هم باشید، میتونید انجامش بدید.
بذارید حدس بزنم چی شده؛ داشتید تو پیشخوان وردپرس چرخ میزدید، یه افزونه جدید رو نصب کردید یا شاید هم داشتید یه قالب سنگین رو آپدیت میکردید. پیش خودتون گفتید “خب تا این آپدیت بشه من برم یه چای بریزم و برگردم”. برمیگردید و بوم! با یه صفحه سفید یا یه متن رو اعصاب مواجه میشید که نوشته: Fatal Error: Maximum Execution Time Exceeded!
اولین حسی که به آدم دست میده ترس از دست رفتن سایته. قشنگ درکتون میکنم! خودم بارها سر طراحی فرانتاند سایتهای مختلف وقتی داشتم یه کیت المنتوری سنگین رو ایمپورت میکردم، با این ارور چشمتوچشم شدم. اما رفقا، همون اول کار یه نفس عمیق بکشید؛ سایت شما نه هک شده، نه اطلاعاتش پریده و نه قرار است هزینه سنگینی برای تعمیرش بدید.
من اینجا هستم تا به سادهترین شکل ممکن، بدون اینکه نیاز باشه یک برنامهنویس خفن باشید، بهتون یاد بدم چطور این خطای مزاحم رو از ریشه بخشکانید. پس ماوس رو اسکرول کنید پایین تا بریم سراغ کالبدشکافی و درمان این مشکل.
اصلاً این خطای Maximum Execution Time Exceeded چی هست؟
ببینید، وردپرس با زبانی به اسم PHP نوشته شده. برای اینکه سرور هاست شما (همون کامپیوتر قدرتمندی که سایتتون روش سواره) کم نیاره و هنگ نکنه، یه قانون سفتوسخت برای کدهای PHP گذاشته شده.
سرور میگه: “هر اسکریپت یا دستوری که قراره اجرا بشه، مثلاً آپلود یه قالب یا نصب یه افزونه، فقط یه زمان مشخصی وقت داره تا کارش رو تموم کنه (معمولاً ۳۰ ثانیه). اگر تو این ۳۰ ثانیه کارش تموم نشد، من پردازش رو متوقف میکنم تا بقیه سایتها و بخشهای سرور دچار کندی نشن!”
مثل وقتی که سر جلسه امتحان نشستید و تایم تموم میشه؛ مراقب میاد برگه رو از زیر دستتون میکشه بیرون، چه یه خط نوشته باشید چه کل سوالات رو! سرور هم دقیقاً همین کار رو با اسکریپتهای سایت شما میکنه و نتیجهاش میشه خطای “حداکثر زمان اجرا به پایان رسید“.
چرا اصلاً این اتفاق برای سایت من میافته؟
خب حالا بریم سراغ اصل ماجرا. چند تا دلیل اصلی هست که معمولاً باعث بروز این خطا میشن. بذار یکی یکی بررسیشون کنیم.
1. آپدیت یا نصب افزونه/قالب سنگین: بعضی افزونهها (مخصوصاً افزونههای سئو، امنیتی یا بکآپگیری) کدهای خیلی زیادی دارن و نصبشون بیشتر از ۳۰ ثانیه زمان میبره.
2. هاست ضعیف یا منابع محدود: اگر هاست اشتراکی خیلی ارزون یا ضعیفی داشته باشید، پردازشها کند انجام میشه و زمان کم میاد. من همیشه پیشنهاد میکنم از هاستهایی استفاده کنید که منابع اختصاصی خوبی دارن تا تو کارهای روزمره لنگ نمونید.
3. ایمپورت دمو و کیتهای طراحی: وقتی میخوایم دموهای سنگین رو با المنتور بالا بیاریم، سرور باید هزاران عکس و متن و کد رو در لحظه پردازش کنه و خیلی وقتها زمان کم میاره.
4. حجم بالای دیتابیس یا فایلها: وقتی میخوای یه فایل خیلی بزرگ آپلود کنی یا یه دیتابیس سنگین وارد کنی (مثلاً موقع مهاجرت سایت)، این پردازشها زمان زیادی میبرن و اگه از اون محدودیت زمانی سرور بیشتر بشن، با ای خطا مواجه میشی.
چطور خطای Maximum Execution Time رو حل کنیم؟ (3 روش تست شده)
رسیدیم به بخش جذاب ماجرا. برای حل این مشکل ما فقط باید به سرور بگیم: “اون تایمر ۳۰ ثانیهای رو بکن ۱۲۰ ثانیه یا ۳۰۰ ثانیه تا سایت من بتونه نفس بکشه و کارش رو تموم کنه.” همین!
برای این کار ۴ تا روش داریم که از راحتترین به سختترین براتون چیدمشون:
روش اول: ویرایش فایل wp-config.php (راهحل محبوب خودم!)
راستش رو بخواید، من همیشه اول میرم سراغ این روش. هم سریعه، هم دردسر نداره. فایل wp-config.php قلب تپنده وردپرسه و تنظیمات اصلی اونجاست.
چطوری انجامش بدیم؟
- وارد کنترل پنل هاستتون بشید (سیپنل یا دایرکتادمین فرقی نمیکنه).
- برید تو بخش File Manager (مدیریت فایلها).
- پوشه
public_html(یا همون پوشه اصلی سایتتون) رو باز کنید. - اونجا یه فایل میبینید به اسم
wp-config.php. روش کلیک راست کنید و گزینه Edit (ویرایش) رو بزنید. - حالا تو کدهایی که باز شده، بگردید دنبال این خط:
/* That's all, stop editing! Happy blogging. */ - دقیقاً بالای این خط، کد زیر رو کپی و پیست کنید و تغییرات رو ذخیره کنید:
این کد میگه اسکریپتها حداکثر ۳۰۰ ثانیه (۵ دقیقه) وقت دارن اجرا بشن. میتونی این عدد رو بسته به نیازت بیشتر یا کمتر کنی. البته یادت باشه بعد از هر تغییر، فایل رو ذخیره کن و سایتتو دوباره تست کن.
روش دوم: تغییرات در فایل .htaccess (قدرتمند و سریع)
اگر روش اول جواب نداد، یا اصلاً دوست نداشتید به فایل کانفیگ دست بزنید، فایل .htaccess گزینه بعدیه. این فایل تنظیمات مربوط به آپاچی (وبسرور) رو کنترل میکنه.
نکته مهم: این فایل معمولاً تو هاست مخفیه. پس وقتی رفتید تو File Manager و پوشه public_html، اگر فایل .htaccess رو ندیدید، از گوشه بالا سمت راست (تو سیپنل) روی دکمه Settings کلیک کنید و تیک گزینه Show Hidden Files (dotfiles) رو بزنید و ذخیره کنید تا فایل ظاهر بشه.
- روی فایل
.htaccessکلیک راست کنید و Edit رو بزنید. - برین به آخرین خط فایل (یا اول فایل فرقی نداره، ولی آخرش امنتره).
- این خط کد رو اونجا قرار بدید.
- فایل رو ذخیره کنید. سایت رو رفرش کنید؛ به احتمال ۹۹ درصد خطای Fatal Error: Maximum Execution Time Exceeded ناپدید شده!
روش سوم: تغییرات در فایل php.ini (مخصوص حرفهایها)
این روش بیشتر به درد کسانی میخوره که سرور مجازی (VPS) یا سرور اختصاصی دارن، یا اینکه شرکت هاستینگشون دسترسی ویرایش فایل php.ini رو بهشون داده باشه. فایل php.ini تنظیمات اصلی خود PHP رو تو سرور کنترل میکنه.
اگر تو هاست اشتراکی هستید، معمولاً نمیتونید مستقیم این فایل رو پیدا کنید، اما خیلی از هاستهای سیپنل ابزاری دارن به اسم MultiPHP INI Editor.
- تو صفحه اصلی سیپنل، دنبال بخش Software بگردید و روی MultiPHP INI Editor کلیک کنید.
- از منوی کشویی، دامنه سایتتون رو انتخاب کنید.
- یه لیست از تنظیمات براتون باز میشه. بگردید دنبال کلمه
max_execution_time. - میبینید که روبهروش نوشته ۳۰. اون عدد ۳۰ رو پاک کنید و جاش بنویسید ۳۰۰.
- دکمه Apply یا Save رو بزنید.
اگر هم مستقیم به خود فایل php.ini دسترسی دارید (که معمولاً تو پوشه wp-admin یا روت هاست قرار داره)، فایل رو ادیت کنید و این خط رو بهش اضافه کنید یا اگر هست، مقدارش رو تغییر بدید:
اگر با این روشها حل نشد چی؟ (تداخل افزونهها)
گاهی اوقات مشکل از تایم سرور نیست، بلکه یه افزونه باگ داره یا مخرب شده و تو یه چرخه بینهایت (Infinite Loop) گیر میکنه. سرور هم هرچی زمان رو بالا میبرید، بازم میبینه این افزونه تمومبشو نیست، پس کلاً متوقفش میکنه.
اگر تمام روشهای بالا رو رفتید و سایت هنوز بالا نمیاد، باید مقصر رو پیدا کنیم.
- برید تو فایل منیجر هاست، وارد
public_htmlو بعد وارد پوشهwp-contentبشید. - اونجا پوشه
pluginsرو میبینید. - اسم این پوشه رو موقتاً تغییر بدید (مثلاً بذارید
plugins-old). با این کار تمام افزونههای سایت تو یه ثانیه غیرفعال میشن. - سایت رو رفرش کنید. اگر بالا اومد، یعنی مشکل قطعی از یکی از افزونههاست!
- حالا اسم پوشه رو دوباره برگردونید به همون
plugins. - برید تو پیشخوان وردپرس، افزونهها رو یکییکی فعال کنید و سایت رو چک کنید تا ببینید کدوم افزونه باعث میشه سایت دوباره ارور بده. پیداش که کردید، پاکش کنید و دنبال یه جایگزین براش باشید.
پیشگیری بهتر از درمان است (چطور دیگه دچار این خطا نشیم؟)
خب، حالا که مشکل حل شده و لبخند روی لبتون اومده، بیاید چند تا نکته رو با هم مرور کنیم تا دفعه بعد سایتتون تو این چالهها نیفته:
- هاست درستوحسابی بخرید: خیلی رک بگم، ۷۰ درصد مشکلات وردپرس سر هاستهای ارزونقیمت و بیکیفیته. اگر کسبوکارتون براتون مهمه، یه هاست وردپرس خوب تهیه کنید. وقتی منابع سرور شما اختصاصی باشه، کمتر با این محدودیتهای آزاردهنده روبرو میشید.
- نسخه PHP سرور رو آپدیت نگه دارید: نسخههای جدید PHP (مثل ۸.۰ به بالا) به شدت روی سرعت و مدیریت منابع بهینهتر شدن. تو هاستتون بگردید دنبال Select PHP Version و همیشه روی نسخههای پایدار و جدید تنظیمش کنید.
- قالبهای استاندارد استفاده کنید: بعضی قالبها انقدر کدهای کثیف و غیراستانداردی دارن که منابع سرور رو درگیر میکنن! سعی کنید از پوستههای بهینه و سبک استفاده کنید.
چند تا اشتباه رایج که نباید تکرار کنی
یه سری اشتباه هست که خیلیا موقع رفع این خطا مرتکب میشن و باعث میشه یا مشکل حل نشه یا حتی بدتر بشه.
اولین اشتباه اینه که عدد رو خیلی بالا میبرن، مثلاً ۳۶۰۰ ثانیه یا بیشتر. این کار میتونه باعث بشه اگه یه اسکریپت گیر کرد، برای مدت طولانی منابع سرورو اشغال کنه و روی کارایی کل سایت اثر منفی بذاره. بهتره عدد رو منطقی و متناسب با نیاز واقعی سایتت انتخاب کنی.
دومین اشتباه اینه که بدون بکآپ گرفتن، مستقیم برن سراغ ویرایش فایلهای حساس مثل wp-config.php یا .htaccess. یه اشتباه کوچیک تو این فایلها میتونه کل سایتو از کار بندازه.
سومین اشتباه هم اینه که فقط به یه راهحل بسنده میکنن. گاهی باید ترکیبی از چند روش رو امتحان کنی تا به نتیجه دلخواه برسی.
سوالات متداول (FAQ)
۱. آیا تغییر عدد ۳۰ به ۳۰۰ در زمان اجرا به سایت آسیب میزنه؟
نه اصلاً! عدد ۳۰۰ ثانیه (۵ دقیقه) یه عدد کاملاً استاندارد برای سایتهای وردپرسیه. فقط سعی کنید اعداد نجومی مثل ۹۹۹۹ نذارید، چون اگر یه هکر به سایتتون حمله کنه و بخواد یه اسکریپت مخرب اجرا کنه، با تایم بینهایت سرورتون رو از کار میندازه.
۳. ارور Maximum Execution Time فقط تو وردپرس پیش میاد؟
خیر! این یک ارور مربوط به زبان برنامهنویسی PHP هست. یعنی شما ممکنه تو سایتهای اختصاصی لاراول یا حتی جوملا هم با این خطا مواجه بشید و جالب اینجاست که راهحل هاش (از طریق هاست) دقیقاً همینایی هست که تو این مقاله با هم یاد گرفتیم.
۴. سایت رو آپدیت کردم و این ارور اومد، آیا اطلاعاتم پاک شده؟
خیالتون راحت، دیتابیس و اطلاعات شما کاملاً سر جاشه. فقط پروسه آپدیت نصفه مونده. به محض اینکه این ارور رو با روشهای بالا رفع کنید، میتونید دوباره دکمه آپدیت رو بزنید و کار رو با موفقیت تموم کنید.
امیدوارم این مقاله براتون مفید بوده باشه. اگر بازم سوالی داشتید یا تو انجام مراحل به مشکل خوردید، حتماً تو بخش کامنتها برام بنویسید. خودم شخصاً تکتک سوالاتتون رو میخونم و جواب میدم. ارادت!
