جلوگیری از کندی پنل مدیریت وردپرس در زمان اختلال اینترنت
در زمانهایی که دسترسی سرورهای داخل ایران به اینترنت بینالملل دچار اختلال یا قطع میشود، پنل مدیریت وردپرس ممکن است بهشدت کند شود. دلیل این موضوع آن است که وردپرس و برخی افزونهها (بهویژه ووکامرس) بهطور پیشفرض در بخش مدیریت درخواستهایی به سرویسهای خارجی مانند wordpress.org و woocommerce.com ارسال میکنند. برای مثال جهت بررسی بروزرسانیها، دریافت اطلاعات افزونهها یا ارتباط با APIهای مختلف.
زمانی که این درخواستها به مقصد نمیرسند، سیستم تا پایان زمان timeout منتظر پاسخ میماند و همین موضوع باعث کندی محسوس در بارگذاری صفحات مدیریت میشود.
برای رفع این مشکل یک قطعه کد آماده کردیم که با استفاده از فیلترهای وردپرس، قبل از ارسال درخواست HTTP بررسی میکند که مقصد آن در میان چند دامنه خارجی مشخص باشد یا خیر. اگر مقصد یکی از این سرویسها باشد، درخواست در همان ابتدای فرایند متوقف میشود و وردپرس یک پاسخ ساختگی دریافت میکند. به این ترتیب دیگر منتظر timeout شبکه نمیماند و صفحات مدیریت بسیار سریعتر بارگذاری میشوند.
برای استفاده از این روش کافی است کد زیر را بهصورت موقت در فایل functions.php قالب سایت قرار دهید. این روش در شرایط فعلی که ارتباط با این سرویسها امکانپذیر نیست، مشکلی در عملکرد سایت ایجاد نمیکند و تنها درخواستهایی را که در حال حاضر بینتیجه میمانند حذف میکند.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
add_filter( 'pre_http_request', function( $false, $args, $url ) { $blocked_hosts = [ 'api.wordpress.org', 'downloads.wordpress.org', 'wordpress.org', 'woocommerce.com', 'dashboard.woocommerce.com', 'api.woocommerce.com', 'w.org', ]; foreach( $blocked_hosts as $host ) { if( strpos( $url, $host ) !== false ) { return [ 'response' => [ 'code' => 403, 'message' => 'Blocked' ], 'body' => '', 'headers' => [], 'cookies' => [], ]; } } return $false; }, 10, 3 ); |
پس از بازگشت وضعیت اینترنت به حالت عادی، توصیه میشود این کد را از فایل قالب حذف کنید تا ارتباط وردپرس با مخازن رسمی و سرویسهای خارجی دوباره برقرار شود و سیستم بروزرسانیها و سایر قابلیتهای مرتبط بهدرستی کار کند.