ايران ويج

نسخه‌ی کامل: گزارش مشکلات سایت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
جالب اینجاست که به پروفایل ها کار نداشت صفحات بخش ها مثلا بخش رباتیک اعلامیه و اخبار من ندیدم بخشی رو باز کنه از همین جا فهمیدم که مشکل از سایت خودمون چون یه ۷۰ تا سایت دیگه هم رو سرور هست
سلام
خیلی جالبه. من کل فایلشو گشتم. به غیر از یه hook انداختن اونم توی صفحه پروفایل هیچ راه ارتباطی دیگه ای با mybb نداشت. نمیدونم چطوری صفحات دیگرم خراب میکنه!!! کلا یه دونه loop بیشتر نداره!Sad
با این حال من یه خرده دستکاریش کردم.
الان تست کنید ببینید چطوره؟ روی لوکال حسابی باهاش ور رفتم، مشکلی نداشت.

راستی. وقتی فعالش میکنید پیغام The selected plugin has been activated successfully. ( یا معادل فارسیشو ) میده اون بالا؟
نه دوباره همون شکله
البته این دفه تو پروفایل ها نمی ره شاید دفه قبل هم همین جوری بود
اون پیغام هم می یاد
دیتابیسو بزرگش کردم (20000 اعضا و 170000 پست ) . حالا حدود 10 ثانیه گیر میکنه ( یهنی سرور سرعتش کمتره؟ )
گیرشو پیدا کردم. روی این حط هسته:
$query = $db->query("SELECT t.*, f.name, i.path, r.dateline as 'lastread' FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."forums f ON (f.fid=t.fid) LEFT JOIN ".TABLE_PREFIX."icons i ON (i.iid=t.icon) LEFT JOIN ( SELECT tid,dateline FROM ".TABLE_PREFIX."threadsread WHERE uid='$uid') r ON (t.tid=r.tid) WHERE t.tid IN (SELECT DISTINCT p.tid FROM ".TABLE_PREFIX."posts p WHERE p.uid='$uid') $unviewwhere ORDER BY t.lastpost DESC LIMIT ".$mybb->settings['recentthreadsno']);
و توی این تکه :WHERE t.tid IN (SELECT DISTINCT p.tid FROM ".TABLE_PREFIX."posts p WHERE p.uid='$uid
نمیدونم چیکارش کنم؟ چرا یه دستور select اینهمه زور میخواد؟؟
خوب بابا ۶۰ تا سلکت زدی تو هم برای هر سلکتی کلی کار باید انجام بده
طراحی دیتابیس کار راحتی نیست باید دقیقا بدونی دیتابیس چی کار می کنه ایندکس ها چی هستند و این سلت های تو در تو چه جوری کار می کنن پیش نهاد می کنم یه کتاب در باره mysql بگیری بخونی
با دیتابیس و اینا یه کم آشنام. اکثر جدول های mybb رو باهاشون ور رفتم و کاربردشون و نحوه کارشونو میدونم. ( دستورو خوندید ؟)
این سه تا select هست. من نتونستم جور دیگه ای درشون بیارم. اطلاعات از جداول threads ، forums ، icons ، threadsread باید جمع بشه و شرطشم باید توی جدول posts کنترل بشه.
و تکه گیر دارش هم فقط همون قسمت شرط یعنی این دستوره:
SELECT DISTINCT p.tid FROM ".TABLE_PREFIX."posts p WHERE p.uid='$uid
اگه این تکه رو بردارم دستور به سرعت اجرا میشه. نمیدونم چرا فقط روی این گیر داره چون من از جدول threads هم استفاده کردم و این در حالیه که روی دیتابیسم تعداد رکورد های جدول threads و posts مساویه.
اگه از راه دیگه ای میشه یا دستورو میشه به شکل دیگه ای میشه این دستورو نوشت لطفا بگید.
نمی دونم شاید توی تیبل پست روی uid ایندکس نداره برای همین طول می کشه
کار دیگه هم می شه کرد می تونی join کنی بعد شرط رو چک کنی (البته توی join کردن هم باید ببینی چی رو با چی join می کنی ممکنه یه جدول خیلی بزرگ بسازی)
WHERE t.tid IN ()
وقتی جلوی IN ۳۰۰۰ تا عدد قرار بگیره بازم فشار می یاره
درستش کردم. روی سیستم من که دیگه فشار نمیاره.
تست کنین حتما نتیجه رو بگید.
ببین تست کردنش خیلی دردسر داره معمولا یه بار باید سیستم رو ریست کرد که دردسر های دیگه ای تولید می کنه
دقیقا مشکل رو فهمیدی ؟
چه جوری برطرف شد؟
من روی سیستمم تست کردم. دیتابیسشو آوردم روی 60 مگ. الان دیگه گیر نمیده.
رفتم توی MyBB دیدم توی یه مورد مشابه اول مقادیر جلو IN رو میگیره بعد خودش توی دستور میگذاره جلوش. به نظر یه خرده چیز میاد ولی خب جواب میده.
ظاهرا که خوبه مشکلی نداره دستت درد نکنه
اگه وقت داری رو این پلاگین پرداخت کار کن می شه یه قسمت از پست رو پولی کرد یعنی بگی اگه این قسمت رو می خوای ببینی باید ۱۰۰۰ تومان بدی نمونه های نوشته شدش هم هست (MyPlaza)
این سایت رو هم ببین
http://www.mybbhelp.ir/thread-11.html
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69