برگزیده های پرشین تولز

سریع کردن اجرای اسکریپت php و mysql

bishtar

کاربر تازه وارد
تاریخ عضویت
3 ژوئن 2007
نوشته‌ها
214
لایک‌ها
5
محل سکونت
هرکجا بغیر از اینجا
اگر این تاپیک تکراری هست ببخشید (گشتم ولی مورد مشابه پیدا نشد)

راستش مشکلی برایم ایجاد شده و اینکه وقتی تعداد فیلدها بیش از 20 تا و رکوردهای بانک اطلاعاتی mysql میره رو مرز 500 و 600 هزارتا سرعت بازیابی اطلاعات بسیار کند میشه نمی دونم واقعا راهی برای حل این مشکل هست یا نه.
فعلا اسکریپت من با php و mysql هست . و اینکه واسه اسکریپت php هم راهی برای افزایش سرعت هست یا نه.
این مسئله بسیار برای من حیاتی شده دوستانی که تجربه کار با بانکهای اطلاعاتی پر فیلد و رکورد را دارند لطفا کمک کنند..(در هر نوبت بیش از 100 رکورد فراخوانی می شود)
کوری که دارم حدود 30 خط است و با تعداد زیادی تیبل برای بازیابی اطلاعات و کنترل شرایط سروکار دارد.
درضمن آیا میشه با استفاده از اسکریپت تنظیمات فایل my.ini سرور mysql رو تغییر داد یا حتما باید با شل انجام بشه.
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
اگه روی بهینه سازی کدهات کار کنی بهتر جواب میگیری !
کوری که دارم حدود 30 خط است و با تعداد زیادی تیبل برای بازیابی اطلاعات و کنترل شرایط سروکار دارد.
میشه کوئریت رو بنویسی اینجا؟ :blink:
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
البته استفاده از Zend Optimizer هم به سریعتر اجرا شدن صفحات خیلی کمک میکنه. اما خوب تاثیری تو کوئری و ارتباط با mysql نداره.
 

alik

کاربر قدیمی پرشین تولز
تاریخ عضویت
23 سپتامبر 2005
نوشته‌ها
2,146
لایک‌ها
1,232
موارد زیر را میتوانید انجام بدهید درصورت تمایل می توانید هزینه کنید انجام بدم :

1 - بهینه سازی ساختار دیتابیس (نرمال سازی)
1.5- تغییر ساختار در صورت نیاز
2 - بهینه سازی کوئری ها
3 - آنالیز کوئری های خروجی از برنامه

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

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,396
لایک‌ها
1,288
محل سکونت
aquarium
البته استفاده از Zend Optimizer هم به سریعتر اجرا شدن صفحات خیلی کمک میکنه. اما خوب تاثیری تو کوئری و ارتباط با mysql نداره.
شاهد فکر نمیکنم کمکی بهش بکنه! چون زمان اتصال به دیتاباسش طولانی هست و این ربطی به کدهای php نباید داشته باشه...

شما باید روی نوع تیبل های دیتاباست دقت بیشتری بکنی!!! نوعشون! طولشون! ایندکس قرار دادن کوتاهترین فیلدت برای هر تیبل و از این دست...
 

peymanafraz

کاربر تازه وارد
تاریخ عضویت
28 دسامبر 2005
نوشته‌ها
137
لایک‌ها
0
محل سکونت
$strHome
دوست عزیز اگه سرعت اجرای کدها و اتصال به دیتابیس پایین هست باید روی کدهاتون کار کنید ولی اگه فقط دیتابیس زیاد ططول میده تا رکوردها رو بده و جواب کوئری رو برگردونه بطور حتم دیتابیستون نرمال و اصولی نیست. میتونین قواعد طراحی دیتابیس رو بخونین و دیتابیستون رو نرمال طراحی کنین. البته میتونین با تعریف Index روی فیلدهایی که زیاد بهشون نیاز دارین سرعت رو تا میزان زیادی بالا ببرین.
 

bishtar

کاربر تازه وارد
تاریخ عضویت
3 ژوئن 2007
نوشته‌ها
214
لایک‌ها
5
محل سکونت
هرکجا بغیر از اینجا
مطالب خیلی زیادی راجع به اپتیمایز کردن کد php و mysql وجود نداره و راه استاندارد مشخصی من ندیدم. یسری نکات هست که تقریبا عمومی هست و گفته شده.
یسری مطلب هم راجع به تنظیمات mysql هست که بار cpu و حافظه و ... با کش کردن کم کنیم و در مورد php هم اصلاحات کد نویسی مخصوصا در مصرف حافظه و ... است.

مطلب دیگری که من به اون توجه نکردم ساختار قالب html هست که چند مقاله جالب دیدم که با کمی تغییر در کد زمان نمایش اطلاعات خیلی تفاوت نمی کرد ولی کیفیت نمایش فوق العاده فرق داشت. مثلا یک صفحه زمان بار گذاریش 20 ثانیه بود با اجرای اسکریپت تقریبا تا زمان 15 ثانیه صفحه خالی بود و یکدفعه اطلاعات ظاهر می شد و تا5 ثانیه بعد صفحه کامل می شد. با اعمال تغییر در کدهای html صفحه از زمان 5 ثانیه نمایش داده میشد تا 20- 18 ثانیه که اطلاعات تکمیل می شد. (برای من خیلی جالب بود)

بازهم اگر دوستان در زمینه بانک اطلاعاتی سنگین تجربه دارند لطفا راهنمایی کنند.
 

mirzaee37

کاربر تازه وارد
تاریخ عضویت
10 فوریه 2008
نوشته‌ها
61
لایک‌ها
0
محل سکونت
Iran/Canada
نمیشه همه چیز رو انداخت گردن تعداد query زیاد گرفتن . دیتابیس های بزرگ روی سرورهای اشتراکی خوب جواب نمیدن و اگر سرور اختصاصی داری تنظیمات php و mysql رو حتما چک کن . اما به احتمال زیاد مشکل شما از طراحی دیتابیس است . شاید با ساخت یک table جدید دیگه نیازی به خیلی از proccess های اضافی در php و query های چند خطی نباشه .
 

smhnaji

کاربر تازه وارد
تاریخ عضویت
24 ژوئن 2008
نوشته‌ها
2
لایک‌ها
0
آقا/خانم bishtar میدونی که نمیشه دقیق به این سوال جواب داد

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

دیگه این که یکی از اون کوئری هایی رو که میگی توی phpMyAdmin تست کن ببین چند ثانیه طول می کشه. (میشه اینجوری فهمید که چقدر مشکل از کوئریت هست و چقدر مشکل از load شدن صفحه و کد php و احتمالا javascript)

و یه چیز دیگه این که اگه از MySQL 5.x داری، از Stored Procedure ها استفاده کن.

موفق باشی
 

behzadfu2

کاربر تازه وارد
تاریخ عضویت
9 فوریه 2008
نوشته‌ها
5
لایک‌ها
0
اولا باید تعداد query هاتو کم کنی مسلما 600 تا مورد قبول نیست. استانداردش تا 20 تاست
پس اول یه تجدید نظر تو Query ها بکن
دوما در مواردی که به تعداد مشخصی داده نیاز داری از limit استفاده کن
سوما اگه به ستون جدول میخوای دسترسی داشته باشی به جای * نام ستونهاتو بذار
SELECT name FROM USER WHERE id='ali' limit 1
 
بالا