Тормоза в массивах.

  • Автор темы esergey
  • Дата начала

esergey

Guest
Тормоза в массивах.

Есть у меня код, который немного тормозит. Причина не понятна.
Я просто делаю выборку из базы и в цикле вывожу инфу. Так примерно на 45 строке (номер немного меняется 44-48 в этих пределах) цикл дает конкретный тормоз порядка 3 секунд. Как вы думаете в чем могут быть проблемы? Вот код
PHP:
$result=mysql_query('SELECT cat_name,id FROM '.$cat.' WHERE main_cat='.$arr1[2]);
     $numb=mysql_num_rows($result);


for($i=0;$i<$numb;$i++)
    {
     $arr=mysql_fetch_row($result);
      echo $time2= getgentime ()-$starttime;
          echo '<a href=pages-'.$arr[1].'.html>'.$arr[0].'</a><br>';
      echo $i."<br>";
      echo $time3= getgentime ()-$starttime;
    }
 

esergey

Guest
flush не помогает.
интересно в чем же прблема?
 

KeTal

Guest
В цикле for очень нехорошо сделано:

$arr=mysql_fetch_row($result); - зачем каждый раз это делать?

Лучше:

------------------------------------------------------
while($arr=mysql_fetch_row($result)) {
echo $time2= getgentime ()-$starttime;
echo '<a href=pages-'.$arr[1].'.html>'.$arr[0].'</a><br>';
echo $i."<br>";
echo $time3= getgentime ()-$starttime;
}
------------------------------------------------------

getgentime () - подумай, а стоит ли ее каждый раз вызывать заново? Может лучше один раз забить в переменную до цикла?
 

Фанат

oncle terrible
Команда форума
KeTal
ты хочешь сказать, что в твоём варианте $arr=mysql_fetch_row($result); делается не каждый раз?
 

KeTal

Guest
Каждый, но так в любом случае удобнее, а $i можно вручную наращивать. ИМХО.
 

Фанат

oncle terrible
Команда форума
а какой смысл тогда вкладывался в слова "зачем каждый раз это делать"?
"удобнее" и "очень нехорошо" - согласись, что это не совсем одинаковые понятия?
Тем более, что заниматься украшательствами до того, как дан ответ на основной вопрос, не имеет смысла и сбивает автора вопроса с толку. он-то думает, что ему отвечают по теме.
 

KeTal

Guest
Согласен, но ничего другого, как упростить код тут больше и не придумать. Тут скорее всего надо попробовать на другом сервере, может проблемы у Апача (или иного веб-сервера).
 

Фанат

oncle terrible
Команда форума
ну раз ничего другого не придумать, то и советы такого рода надо оставлять при себе
на том и договоримся.
 

esergey

Guest
while я использовал с самого начала, потом поменял - думал может скорее будет.

То что проблема на хостинге сегодня убедился, на других компах никаких тормозов нет. Но интересно - в чем проблема? Хостер мне не обьяснит - может кто из вас разберется.

А вот пример вывода
PHP:
time3=0.0033729076385498 time2=0.0033960342407227
Alien Sex Fiend
i=33
time3=0.0034160614013672 time2=0.0034379959106445
Vice Squad
i=34
time3=0.0034580230712891 time2=8.1438570022583
Nina Hagen
i=35
time3=8.1439139842987 time2=8.1439480781555
The Cult
То есть похоже проблема в array_fetch_row. Но в чем проблема?
 
Сверху