PDA

View Full Version : بروز كردن كوئري



mortezaaa
پنج شنبه 16 دی 1389, 09:45 صبح
سلام وقتون بخير
من دوتا ارايه به شكل زير دارم



$array1=array("1000","2000","3000");
$array2=array("1","2","3");

بعد تعداد ارايه ها رو بدست ميارم


$count=count($array1);

در مرحله بعدي با دستور for تعداد ارايه ها رو بدست ميارم و جدول خودم رو بروز مي كنم


for($i=0;$i<=$count;$i++){
if(isset($array1[$i])){
//sleep(1);
$ok=mysql_query("UPDATE `send` SET `returnid`=".$array1[$i].",`statuss`='1' WHERE `id`='$array2[$i]' AND `pish`='3000' LIMIT 1") or die (mysql_error());
//unset($ok);
unset($array1[$i]);
unset($array2[$i]);
}else{}
}



حالا نمي دونم براي چي بعد از بروز شدن جدول سي پي يو سرورم لودش بالا ميره (لينوكس) يعني وقتي يك سطر رو بروز مي كنه يك درصد سي پي يو افزايش پيدا مي كنه
ممنون ميشم كمك كنيد (خيلي هم عجله دارم )
البته اين رو هم بگم در اون جدول 150 هزار تا سطر ثبت شده است




mysql_query("UPDATE `send` SET `returnid`=".$response[$i].",`statuss`='1' WHERE `id`='$idsend[$i]' AND `pish`='3000' LIMIT 1") or die (mysql_error());

Keramatifar
پنج شنبه 16 دی 1389, 10:07 صبح
بجای حلقه for از foreach استفاده کنید که performance بسیار بالاتری داره

mortezaaa
پنج شنبه 16 دی 1389, 10:44 صبح
ار foreach هم استفاده كردم ولي تاثيري نداشت

mortezaaa
جمعه 17 دی 1389, 01:30 صبح
كسي راه حلي نداره؟

امیـرحسین
جمعه 17 دی 1389, 20:32 عصر
احتمالا جدول شما صحیح ایندکس نشده. شاید اگر ستون pish رو ایندکس کنید مشکل حل شه یا سیستم رو طوری تغییر بدید که اون بخش از WHERE حذف شه.
نکات PHP رو هم رعایت کنید. از foreach استفاده کنید، or die رو بردارید، اگر آرایه واقعا سه تا عنصر داره unset ها رو حذف کنید.

$array1=array("1000","2000","3000");
$array2=array("1","2","3");
foreach($array2 as $index => $id) {
if(isset($array1[$index]))
mysql_query("UPDATE `send` SET `returnid`='$array1[$index]',`statuss`='1' WHERE `id`='$id' AND `pish`='3000'");
}

mortezaaa
جمعه 17 دی 1389, 23:18 عصر
فيلد pish رو ايندكس كردم
حتي برداشتم ولي باز لود سي پي يو بالا هستش
ارايه ها اگه يك دونه عضو هم داشته باشن باز لودش ميره بالا
ديونه كرده منو
اين قسمت كد هم خيلي برام مهمه

امیـرحسین
شنبه 18 دی 1389, 14:38 عصر
مطمئنید سرور ضعیف یا شلوغ نیست؟ نکنه دارید توی لوکال تست می کنید؟
مطمئنید که لود CPU دقیقا بخاطر این بخش تغییر میکنه؟
من یک کوئری داشتم که توی ده هزارم ثانیه اجرا میشد ولی وقتی با توابع query اجرا میکردم میشد 7 ثانیه. کلی تلاش کردم تا این موضوع رو فهمیدم یعنی فکر نمی کردم مشکل، اجرای اون کوئری در PHP باشه.

mortezaaa
دوشنبه 20 دی 1389, 11:59 صبح
توي لوكال خونه كه مشكلي نداره
سرور هم شلوغ نبود
unset رو حذف كردم لود بهتر از قبل شد