مدیریت یک وبسایت وردپرس پرترافیک که از المانهایی مانند المنتور، ووکامرس و یک قالب پیچیده استفاده میکند، بدون پیکربندی صحیح سرور میتواند به یک کابوس تبدیل شود. خطاهای رایجی مانند «exhausted memory» (اتمام حافظه)، صفحات کند و زمان بارگذاری طولانی، اغلب ریشه در تنظیمات پیشفرض و غیربهینه PHP دارند.
این مقاله بهصورت گامبهگام و برای سه سناریوی پرتکرار، تنظیمات بهینه PHP را معرفی میکند.
چرا پیکربندی PHP اینقدر حیاتی است? 💡
PHP موتور پردازشگر وردپرس است. هر درخواست بازدیدکننده، مستلزم اجرای یک اسکریپت PHP برای تولید صفحه نهایی است. المنتور برای ساخت صفحات، ووکامرس برای مدیریت محصولات و قالب برای یکپارچهسازی همه اجزا، همگی به شدت به منابع سرور (بهویژه CPU و RAM) وابسته هستند. تنظیمات پیشفرض PHP برای چنین وبسایتهای پرمصرفی کافی نیستند و ضروری است که پیکربندی شوند.
نکات ایمنی و مقدماتی 📌
پشتیبانگیری (Backup): پیش از اعمال هر تغییر در فایل php.ini، از کل وبسایت و پایگاه داده خود، یک نسخه پشتیبان تهیه کنید.
دسترسی به php.ini: این فایل معمولاً در پوشه اصلی(مانند public_html یا www) یا در مسیر etc/ قرار دارد. میتوانید از طریق هاستینگ cPanel یا DirectAdmin به آن دسترسی پیدا کنید. اگر دسترسی مستقیم ندارید، از پشتیبانی هاست خود درخواست کنید یا از فایل .user.ini استفاده نمایید.
تست تغییرات: پس از اعمال تغییرات، حتماً وبسایت را مجدداً بارگذاری کرده و از سلامت آن اطمینان حاصل کنید.
سناریو ۱: پیکربندی PHP برای المنتور
صفحات ساختهشده با المنتور به دلیل استفاده از شورتکدها (Shortcodes) و اسکریپتهای CSS/JS سنگین، به حافظه بسیار بیشتری نسبت به یک صفحه استاندارد وردپرس نیاز دارند.
تنظیمات کلیدی در فایل php.ini:
; حداکثر میزان حافظهای که یک اسکریپت میتواند مصرف کند (128MB برای المنتور بسیار کم است)
memory_limit = 256M
; حداکثر زمان اجرای هر اسکریپت بر حسب ثانیه (برای عملیات واردکردن/صادرکردن و ویرایش)
max_execution_time = 300
; حداکثر زمان مجاز برای دریافت دادههای ورودی (برای آپلود رسانه یا قالبها مهم است)
max_input_time = 150
; حداکثر حجم دادههای POST که PHP میپذیرد (برای ذخیره صفحات حجیم)
post_max_size = 64M
; حداکثر حجم مجاز برای فایلهای آپلودشده (برای آپلود تصاویر، قالبها و غیره)
upload_max_filesize = 32M
توضیحات و راهکارهای تکمیلی:
- memory_limit = 256M: این مقدار برای کار کردن معمولی با المنتور و نمای فرانتاند آن معمولاً کافی است ولی اگر در حین ویرایش با خطای حافظه مواجه شدید، میتوانید آن را به مقادیر بالاتری مثل 384M یا 512M افزایش دهید.
- max_execution_time = 300: ویرایش یا وارد کردن یک صفحه سنگین با المنتور ممکن است از زمان پیشفرض (۳۰ ثانیه) بیشتر طول بکشد. با این افزایش از بروز خطای «Timeout» جلوگیری میشود.
- ویرایش محدودیتها در وردپرس: گاهی محدودیتها توسط خود وردپرس اعمال میشود. برای ویرایش این محدودیتها میتوانید مقادیر زیر را به فایل wp-config.php اضافه کنید:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // برای ناحیه مدیریت
استفاده از OPcache: حتماً ماژول OPcache را فعال کنید. این ماژول با کش کردن کدهای کامپایلشده PHP، سرعت اجرای اسکریپتها را به طور چشمگیری افزایش میدهد.
سناریو ۲: پیکربندی PHP برای المنتور و ووکامرس
ووکامرس لایه دیگری از پیچیدگی را اضافه میکند. پردازش سبد خرید، تسویهحساب، درگاه پرداخت، مدیریت حساب کاربری و کوئریهای سنگین پایگاه داده برای محصولات، همگی به منابع بسیار بیشتری نیاز دارند.
تنظیمات بهینه در php.ini:
; فرآیندهای ووکامرس بسیار پرمصرف هستند
memory_limit = 512M
; فرآیند تسویهحساب و درگاههای پرداخت به زمان بیشتری برای ارتباط با بانک نیاز دارند
max_execution_time = 300
max_input_time = 150
; برای واردکردن یا صادرکردن فایلهای CSV حجیم محصولات
post_max_size = 128M
upload_max_filesize = 96M
; ووکامرس میتواند دادهها و sessionهای زیادی تولید کند
max_input_vars = 3000
توضیحات و راهکارهای تکمیلی:
memory_limit = 512M: یک فروشگاه با تعداد محصولات متوسط و ترافیک معمولی به این مقدار نیاز دارد. در فروشگاههای بسیار بزرگ، این مقدار ممکن است تا 768M یا 1G نیز نیاز به افزایش داشته باشد.
max_execution_time: فرآیند تسویهحساب، بهویژه اگر درگاه پرداخت کندی داشته باشد، ممکن است زمان زیادی ببرد. این تنظیم از قطع شدن فرآیند پرداخت جلوگیری میکند.
max_input_vars = 3000: هنگام ذخیرهسازی تنظیمات پیچیده یک محصول با تنوعهای(Variations) زیاد، ممکن است با خطای «ظرفیت سرور» مواجه شوید. ولی با این افزایش، تعداد متغیرهای قابل ارسال به سرور بیشتر میشود.
ویرایش محدودیتهای وردپرس: درست همانند سناریو قبل، برای ویرایش محدودیتهایی که وردپرس ایجاد میکند میبایست فایل wp-config.php را ویرایش کرد:
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_MAX_MEMORY_LIMIT', '768M' );
سناریو ۳: پیکربندی PHP برای المنتور، ووکامرس و قالب
این سناریو، سنگینترین حالت ممکن است. یک قالب سنگین (Theme) که معمولاً با صفحهسازهایی مانند Elementor یا WPBakery ساخته شده، دهها فایل CSS و JS، اسلایدرها، انیمیشنها و… را به فرآیند بارگذاری اضافه میکند. پیکربندی در اینجا بسیار حیاتی است.
تنظیمات پیشنهادی در php.ini:
; حافظه بالا برای قالبهای سنگین
memory_limit = 768M
; عملیات پیچیده قالب و درخواستهای AJAX به زمان نیاز دارند
max_execution_time = 360
max_input_time = 180
; برای پشتیبانگیری، بازیابی سایت یا وارد کردن محصولات با حجم زیاد
post_max_size = 256M
upload_max_filesize = 196M
; برای قالبهایی که تنظیمات سفارشیسازی زیادی دارند ضروری است
max_input_vars = 5000
; به پردازش لیستهای طولانی محصولات یا داده کمک میکند
max_input_nesting_level = 256
توضیحات و راهکارهای تکمیلی:
memory_limit: این مقدار بسته به سنگینی قالب و تعداد افزونهها ممکن است متفاوت باشد. مانیتورینگ مصرف حافظه توسط افزونههایی مانند Query Monitor ضروری است تا مقدار دقیق مورد نیاز را مشخص کنید.
بهینهسازی OPcache: تنظیمات OPcache باید متانسب با چنین سایتهایی بهینهسازی شوند.
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.revalidate_freq=300
جمعبندی نهایی🎯
پیکربندی PHP یک فرآیند مبتنی بر آزمایش و مانیتور کردن میزان منابع مصرفی سایت است. مقادیر ارائهشده در این مقاله برای این فرآیند نقطه شروع خوبی هستند. همیشه به خاطر داشته باشید که افزایش بیرویه دسترسیها راهحل نهایی نیست؛ بهینهسازی کد، استفاده از کشینگ (Caching) قوی (مانند Redis یا Memcached برای کش کردن آبجکتهای وردپرس و همچنین کش مرورگر)، و انتخاب هاستی مناسب، نقش به مراتب مهمتری در عملکرد نهایی وبسایت شما ایفا میکنند.