ورد پرس و مشکلی جدی در کلاس wpdb ! ۴
ند روز پیش در انجمن های ورد پرس فارسی به بخشی بر خوردم که به نتیجه نرسیده بود مربوط به عدم نمایش بعضی از قسمتهای سایت در وردپرس میشد که را حل های مثل کم کردن تعداد نمایش مطالب در صفحه و غیره رو براش داده بودن ، البته چون مشکل در هسته ورد پرس بود و همه از اون غافل بودن ، آخه برنامه نویسهای وردپرس هم آدمن دیگه ممکنه اونها هم اشتباه کنن ، بنده هم یه نگاهی با وبلاگ خودم کردم دیدم ای دل غافل مال من هم این مشکل رو داره چون به کد قالبم اطمینان داشتم رفتم سراغ بقیه بخشها با کمی دقت معلوم بود که مشکل از دیتابیس و قطع شدن زود ارتباط با اونه حالا کلاس n خطی wpdb رو کی حال داره بگرده و مشکلش رو پیدا کنه بلاخره بعد از مقدار جستجو در باره این کلاس پی اچ پی به نتجه رسیدم :
متاسفانه در تمامی ورژن های وردپرس مشکلی وجود داره که باعث میشه در بعضی مواقع ارتباط با پایگاه داده به صورت ناگهانی قطع بشه که مشکل خودشو به صورت عدم نمایش برخی از بخشهای سایت مثل( لینکهای سایت یا لیست دسته ها و یا لیست آرشیو ) نشون می ده که دلیل برقطعی ناگهای ارتباط با پایگاه داده می باشد البته در نظر اول مشکل به نظر از قالب می آید که اصلا ربطی بهش نداره مشکل از یک کلاس پی اچ پی می باشد که ورد پرس از آن برای تمامی اتصالات و کوئری های مورد نیازش استفاده میکنه این کلاس بسیا قوی و راحته و با حالتی شی گرا و پرسرعت به عملیات مربوط به پایگاه داده مای اس کیو ال می پردازد، خوب مشکل کجاست ؟ مشکل در بخشی از این تابع می باشد که می بایست یک کوئری برای کمی صبر کردن قبل از پایان دادن به جلسه یا همون سشن مربوطه به مای اس کیو ال به این کد اضافه میشدتا مشکلی پیش نیاد تنها نیاز به یک خط کد می باشد تا دیگه مشکلی برای کلاس پیش نیاد:
خوب فیلی که می بایست ویرایش بشه درپوشه wp-includes می باشد و با نام wp-db.php که می بایست با فایلی که در زیر قرار داده شده جابه جا شود توجه این فایل برای نسخه های مختلف فرق میکنه برای همین در نسخه های مختلف برای دانلود قرار داده شده فایلی را که دریافت می کنید می بایست با ورژن وردپرس شما باشد :
اگه شما هم چنین مشکلی دارید برای دریافت فایل تصیح شده به ادامه مطلب توجه کنید
نسخه ورد پرس ۲/۷/۱
این نسخه تغییری در فایلwp-db.php با نسخه ۲/۷ نداشته است.
پس میتوانید از فایل نسخه ۲/۷ برای این نسخه استفاده نمایید.
نسخه ورد پرس ۲/۷
فایل با تغییرات لازم Workaround wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس ۲/۶/۱
در این نسخه هیچ گونه تغییری در کلاس wp-db.php نسبت به ورژن ۲/۶ ورد پرس داده نشده
نسخه ورد پرس ۲/۶
فایل با تغییرات لازم Workaround wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس ۲/۵
فایل با تغییرات لازم Workaround wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس ۲/۳/۳
در این نسخه هیچ گونه تغییری در کلاس wp-db.php نسبت به ورژن ۲/۳/۲ ورد پرس داده نشده
نسخه ورد پرس ۲/۳/۲
فایل با تغییرات لازم Workaround wp-db.php
فایل با تغییرات لازم قدیمی Workaround-old wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس ۲/۳/۱
در این نسخه هیچ گونه تغییری در کلاس wp-db.php نسبت به ورژن ۲/۳ ورد پرس داده نشده
نسخه ورد پرس ۲/۳
فایل با تغییرات لازمWorkaround wp-db.php
فایل با تغییرات لازم قدیمی Workaround-old wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس ۲/۲/۳
در این نسخه هیچ گونه تغییری در کلاس wp-db.php نسبت به ورژن ۲/۲/۱ ورد پرس داده نشده
نسخه ورد پرس ۲/۲/۲
در این نسخه هیچ گونه تغییری در کلاس wp-db.php نسبت به ورژن ۲/۲/۱ ورد پرس داده نشده
نسخه ورد پرس ۲/۲/۱
فایل با تغییرات لازم Workaround wp-db.php
فایل با تغییرات لازم قدیمی Workaround-old wp-db.php
فایل اصلی Original wp-db.php
نسخه ورد پرس۲/۱/۲
فایل با تغییرات لازم Workaround wp-db.php
فایل با تغییرات لازمث قدیمی Workaround-old wp-db.php
فایل اصلی Original wp-db.php
توجه شما می بایست فایل دریافتی مربوط به ورژن خود را به نام wp-db.php تغییر نام دهید و به جای فایل wp-db.php در شاخه wp-includes وبلاگ وردپرسودتون باز نویسی کنید
در ضمن لازم به ذکر است که این مشکل بر روی لوکال هاست به دلیل سرعت بالا اجرای عملیات ایجاد نمی شود و فقط بر روی نسخه آنلاین این مشکل به وجود می آید
اگه می خواید بدونید اصلا چه تغییری در این فایل انجام شده به کد زیر دقت کنید این کد تنها خط کدی است که به کلاس افزوده شده که خوش بختانه مشکل رو به درستی حل می کنه :
$this->query("set session wait_timeout=600");
امید وارم که با این مطلب به سرعت تمامی وبلاگهای که این مشکل رو دارن درست بشن و بتونن به درستی به کار خودشون ادامه بدند
لطفا وبلاگ هایی که از این روش استفاده می کنن موفقیت و یا مشکل خودشون رو در بخش نظرات بنویسند ![]()
با آرزوی موفقیت و پیروزی روز افزون برای شما دوستان عزیز

















سلام
از مطالب مفیدتون واقعا استفاده کردم /
می خواسم بپرسم این مشکل به متغیر تام آت سرور مربوط می شه درسته؟
باز هم ممنون
ممنون از نظرتون حسن عزیز
بله این موضوع مربوط به wait_timeout می باشد که می بایست توسط query برای دیتا بیس تعریف شود.
این مشکل روی اکثر سروهایی که اشتراکی می باشد وجود دارد ولی توی سرورهای اختصاصی میشه این مشکل رو از راههای دیگه هم حل کرد.
در ضمن این مشکل حتی در آخرین نسخه ۲.۸.۴ هم وجود دارد.
موفق و پیروز باشید.
سلام
پیشنهاد میکنم این مشکل رو به سازندگان خود وردپرس هم گوشزد کنین. اینجوری خیره کارتون به تمام کاربرا میرسه
باتشکر
این مشکل فقط روی بعضی هاستینگ های پیش میاد به همین دلیل تا حالا با چندین بار تغییری که در کلاس بخش دیتابیس داده اند باز هم مشکلاتی دیده میشه….