بازدید: 119 بازدید
ارور دیتابیس مرتبط با ووکامرس که باعث دان شدن و ارور WP_Hook
5/5 - (1 امتیاز)

با درود به همه دوستان و عزیزان که از سیستم مدیریت محتوای وردپرس و بخصوص افزونه فروشگاهی  ووکامرس استفاده میکنند . 

چند مدت پیش بر روی وب سایتی از طرف کارفرمایی در زمینه کیف و کفش کار میکردیم که بعد از مدتی که کاربران بر روی وب سایت ورود میکردن و برخی ارور WP_Hook هم زیاد بود  ، بر روی دیتا بیس موارد ریکوئست زیادی وارد میشد و سایت از طرف سرور قطع میشد و سایت دیگر تا مدتی بالا نمیومد . 

طی بررسی های که به عمل اومد و eror log های سمت سرور و وب سایت کاملا بررسی میگردید . 

ارور دیتابیس مرتبط با ووکامرس که باعث دان شدن و ارور WP_Hook

این بخشی از ارور لاگی هست ایجاد میشد .

 

[01-Sep-2022 09:31:12 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور UPDATE 4wp_options SET option_value = ‘a:1:{i:0;s:29:”{{WP_PLUGIN_DIR}}/woocommerce”;}’ WHERE option_name = ‘_transient_jetpack_autoloader_plugin_paths’ ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Plugins_Handler->cache_plugins, set_transient, update_option
[01-Sep-2022 09:31:35 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور UPDATE 4wp_options SET option_value = ‘a:0:{}’ WHERE option_name = ‘_transient_jetpack_autoloader_plugin_paths’ ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Plugins_Handler->cache_plugins, set_transient, update_option
[01-Sep-2022 09:36:18 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور UPDATE 4wp_options SET option_value = ‘a:0:{}’ WHERE option_name = ‘_transient_jetpack_autoloader_plugin_paths’ ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp225400540d1b8fa2507bcebf7ea0d4ff\Plugins_Handler->cache_plugins, set_transient, update_option
[01-Sep-2022 09:49:52 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور SELECT 45SDep_posts.* FROM 45SDep_posts WHERE ID IN (77170) ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, WC_Cart_Session->maybe_set_cart_cookies, WC_Cart->is_empty, WC_Cart->get_cart, WC_Cart_Session->get_cart_from_session, _prime_post_caches
[01-Sep-2022 09:49:52 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور SELECT * FROM 45SDep_posts WHERE ID = 78146 LIMIT 1 ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, WC_Cart_Session->maybe_set_cart_cookies, WC_Cart->is_empty, WC_Cart->get_cart, WC_Cart_Session->get_cart_from_session, wc_get_product, WC_Product_Factory->get_product, WC_Product_Factory::get_product_type, WC_Data_Store->__call, WC_Product_Data_Store_CPT->get_product_type, get_post_type, get_post, WP_Post::get_instance
[01-Sep-2022 09:49:52 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور SELECT * FROM 45SDep_posts WHERE ID = 78146 LIMIT 1 ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, WC_Cart_Session->maybe_set_cart_cookies, WC_Cart->is_empty, WC_Cart->get_cart, WC_Cart_Session->get_cart_from_session, wc_get_product, WC_Product_Factory->get_product, WC_Product_Simple->__construct, WC_Product->__construct, WC_Data_Store->read, WC_Product_Data_Store_CPT->read, get_post, WP_Post::get_instance
[01-Sep-2022 09:49:52 UTC] خطای Commands out of sync; you can’t run this command now در پایگاه‌داده وردپرس برای دستور SHOW FULL COLUMNS FROM wp_woocommerce_sessions ساخته شده توسط shutdown_action_hook, do_action(‘shutdown’), WP_Hook->do_action, WP_Hook->apply_filters, WC_Session_Handler->save_data

در صورتی که اصلا jetpack هم فعال نیست

در یک سری از فرومهای فارسی و انگلیسی پیشنهادات متفاوتی در مورد رفع این موضوع پیش اومد بود .

ما در تمامی جداول دیتا بیس بررسی کردیم و هیچ نقطه ای از ارتباط وب سایت با افزونه jetpack مشاهده نکردیم . چون بخشی از ارورها مربوط به لود شدن jetpack  بود

در پس بررسی ساختار کاری ووکامرس و برخی از افزونه ها و به خصوص قالب و ساختارهای امنیتی به چندین مورد برخوردیم

لود شدن برخی موارد از jetpack

  1. ابتدا لود شدن برخی موارد از jetpack  در مسیر ووکمرس به آدرس woocommerce\vendor\jetpack-autoloader و مسیر دیگری در ووکامرس به آدرس woocommerce\vendor\automattic  که کار برخی ارتباطات و برسی های امنیتی و برخی هوک ها در ووکامرس برای ارتباط با سرور ووکامرس و برخی افزونه های دیگر را داشت . در تست عملی بر روی هر کدام از ایم مسیرها فایلها و فولدر هایی موجود بود که حتی با این که عملیاتی در سایت انجام نمیدادند ولی با کوچکترین تغیراتی در ساختار باعث دان شدن سایت و ارور ووکامرس میشد
  2. در ادامه چون سرور هاست که در آن سایت قرار داشت لوکیشن ایران داشت و ارتباط ووکامرس با سرور از مسیر ایران دچار اختلال بود . با تغیر هاست از سرور ایران به سروری خارج از ایران  50 درصد مشکل رفع شد . چون دیگه ارور دسترسی به جت پک و سرور ووکامرس نمیگرفت. البته نکته مهم در این مورد این بود که برخی از هاستینگ ها با گول زدن خریداران همان هاست ایران را با یک proxy  به اسم خارج از ایران میفروختند که در ادامه به این موضوع هم مفصل رسیدگی میکنیم .  بعد از مدتی تمامی مسیرهای چک شده در دیتا بیس رو بررسی کردیم و کدهای فراخوانیjetpack رو حذف کردیم. 
  3. قبل از انتقال هاست به سرور دیگری خارج از کشور با هاستینگ صحبت کردم و یکسری از افزونه ها از سرور ایران نمیتونن api از خارج از کشور بگیرن و این باعث ریکوئست و Hook هوک های بیشتر در دیتا بیس و فشار به سرور میامد

مشکل ارور های لحظه ای نه ثابت 

یک مشکل مهم در این نوع موارد ووکامرس و وب سایت های فروشگاهی هست و آن هم  این ارور ثابت نبوده و  لحظه ای بوجود میامد که شما بیای با غیر فعال کردن پلاگین یا تم همون لحظه بفهمی مشکل از تداخله پلاگین هاست یا خیر .

مواردی که برخی از دوستان بررسی کرده بودند ( بار ها و بار ها کل پلاگین ها رو غیر فعال و فعال کردیم اما مشکل پابرجاست . یهویی بروز میکنه و مرتب به دیتابیس کانکشن میزنه تا جایی که مصرف CPU به حدی بالامیره که سایت میخوابه . مجبور میشیم به هاستینگ بگیم پروسس هارو کامل قطع کنه نیم ساعتی تا دوباره سایت بالا بیاد و تا یکی دو روز مشکل نداریم . دیر یا زود باز دوباره این ارور پیداش میشه . مربوط به ترنزیشن های ووکامرسه که با هر بار پاک کردنش اتوماتیک دوباره ظاهر میشه. )
3. در یک بررسی دیگر بر آن شدیم تا با قرار دادن cdn  بتوانیم موارد را بهتر تست و ببرسی کنیم 

CDN رو گرفتیم ببینیم جواب میده. در ضمن کانکشن ها بصورت ناگهانی در یک بازه زمانی نامشخص ناگهانی بالا میره ! که مشکل ساز میشه .
من در ابتدا با تفکر بر این موضوع که تصورم این بود که به دلیل اینکه کانکشن ها به دیتابیس بالامیره این ارور هارو دریافت میکنیم ! شاید واقعا مشکل از ووکامرس نباشه . در حالت نرمال و معمولی چک کردیم کانکشن به دیتابیس بسیار پایینه ! وضیعت کاملا مطلوب بنظر میرسه . ولی یهویی ناگهانی کانکشن بیش از اندازه ای به دیتابیس زده میشه 

4. یه تست کوچیک دیگر هم کردم
ببینید عزیزان . وقتی یک وب سایت میخواد با api یا وب سایتی در خارج از خودش ارتباط بگیره و نتونه این ارتباط رو برقرار کنه در لحظه تلاش مجدد برای این کار میکنه و ریکوست بالا میره برای این ارتباط . حتی وقتی شما کاربری تو سایت فقط 2 نفر باشن.

افزونه wp -rocket یک سری مشکلات داره با ووکامرس در بخش fragments و تاثیر این زیاده رو درخواست ها میگذارد .

برخی از سایت ها یه افزونه داره side-cart-woocomerce که دقیقا با fragments ووکار س هم کار میکنه با این فایلش xoo-wsc-main.js . پس یه سری از اختلالات میتونه از همین باشه .

به هیچ وجه قالب یا افزونه های که لایسنس ژاکت یا راستچین دارن استفاده نکنید . چون در زمانهای تست فعال بودن لایسنس باعث اختلال در ارتباطات بین 2 سایت میشه و این هم موضوع مهمی در بین هاست و سایت شماست .

حال اگر شما از هر دو مارکتی که تست لایسنس دارند انجام دهید که مشکل چندین برابر میشود .

استفاده از قالب نادرست و حتی کد شده

در خیلی از موارد . افراد بر پایه تبلیغات و آموزشهای نادرست بر ان شده بودند تا از قالب مثلا خبری یا قالب شخصی  و یا قالب چند منظوره غیر تخصصی برای وب سایت فروشگاهی خود استفاده کنند و این باعث بوجود امدن اختلال های خیلی زیادی در وب سایت در طولانی مدت میشود . 

hpos و ارتباط متفاوت با دیتا بیس 

hpos در نسخه 9 کامل میشه که بهینه کردن جداول دیتا بیس برای جداسازی دیتای محصولات و جداول دیگر هست .
خوب میتونید در بخش پیکربندی و بخش امکانات و بخش ذخیره‌سازی داده‌های سفارش

میتونی تفکیک کنی تا از نسخه قدیم دیگه استفاده نشه و بهبود ببخشه . این مورد برای مواردی که ساختار قالب و افزونه ها هنوز هماهنگی کامل و لازم را با این قابلیت ووکامرس ندارند هم دچار اختلال میشود.

چندتا نکته مهم بگم در مورد افزونه ها 

  1. دلیل اینکه ادمهای زیادی از یک افزونه خاص  استفاده میکنن خوبی اون نیست مانند افزونه موشک وردپرس . بعضی مواقع تداخل هست. پیشنهادم این مدتی با لایت اسپید تست کنید. من روی دوتا سایتم مجزا با لایت اسپید کار میکنم چون موشک وردپرس با افزونه و قالب تداخل داره
  2. برای تست بررسی درخواست های زیاد بر روی سایت و دیتا بیس میتوانید افزونه Query Monitor – The developer tools panel for WordPress – WordPress plugin | WordPress.org 1 رو نصب کنید و مشاهده کنید کوری های زیادی که میاد از کجاست
  3. حتما اگر قالب دارین که تو تم فارست هست نسخه ارجینال بگیرید از ژاکت و راستچین نگیرید . خواستید بگید نسخه ارجینال قالبو بدون هیچ نو کد گذاری و بررسی لایسنس بگیرید . که وب سایت وب سما هیچ یک از محصولات لایسنس نداشته و کد نشده اند.

در انتها توصیه دوستانه 

ببینید دوستان  عزیز من یکی از مشکلاتی که دیدم تو خیلی از سایتا اینه که از قالب درستی استفاده نمیکننو به مرور با 10 تا افزونه میخوان روی سایتشون اون قابلیتهارو بگیرن .
الان مثلا خیلی از سایت ها قالب هلو المنتور هست . بعد با المنتور پرو و جت انجین ووووو سعی در اضافه کردن قابلیت دارین .
دقت کنید که قالبی مثل xstore یا woodmart یا flatsome بهتون کلی قابلیت میده و تنها برای اون موارد کد نویسی شده . اما افزونه مثلا 20 تا المان دارد و همه اونها برای شما نیاز نیست .
پس حتما دقت کنید بر حسب نیازتون قالب درست انتخاب کنید .

قالب هلو المنتور به نظر شخصی من فقط برای استفاده بلاگی خوبه که نیاز خاص ندارید و میخواهید ریکوعست زیادی به سرور نیاد .
پس قبل از هرچیزی نیازتون رو بدونید بعد میتونید تمامی موارد رو رفع کنید .

مطالعه بیشتر