[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обработчик аякса долго не дает ответ.
Shkiper
У меня построен аякс запрос на чистом Javascript. Он работает без запинки. Но обработчик - очень сильно тормозит. Например во время выполнения запроса прокручивается анимация и потом выдает ошибку PHP , то что запрос длился боьше чем 200 сек и сбросило все. Вот код обработчика:
<?php

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");


require './../data/db.php';

$id_option = $_POST['id_option'];
$update_poll = mysql_query("UPDATE `poll_option` SET `number_of_poll`=(`number_of_poll`+1) WHERE `id`='".$id_option."'") or die(mysql_error());

if($update_poll === true)
{

$select_poll = mysql_query("SELECT `name`,`number_of_poll` as `num` FROM `poll_option` WHERE `id_poll`='21'") or die(mysql_error());
$i = 1;
$poll_num = 0;



while($polle = mysql_num_rows($select_poll))
{

$poll_num = $poll_num + $polle['num'];

}


while($poll = mysql_fetch_assoc($select_poll))
{

$percent = $poll['num'] * 100;
$option_percent = $percent / $poll_num;
$option_percent = floor($option_percent);
if($option_percent > 100)
{
$option_percent = round($option_percent, -2);
while($option_percent > 100)
{

$option_percent = $option_percent - 100;

}


}

$img = "template/DE_images/poll" . $i . ".gif";

echo "<div style='background: url(".$img."); width: ".$option_percent."px; height: 10px;'></div> - " . $poll['num'] . "(" . $option_percent . "%)<br>";
$i++;
}




}

else
{

echo "<p>Во время выполнения запроса произошла неизвестная ошибка.</p>";

}

Вот он и виснет. А если я уберу 1 цикл то работает:
<?php

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");


require './../data/db.php';

$id_option = $_POST['id_option'];
$update_poll = mysql_query("UPDATE `poll_option` SET `number_of_poll`=(`number_of_poll`+1) WHERE `id`='".$id_option."'") or die(mysql_error());

if($update_poll === true)
{

$select_poll = mysql_query("SELECT `name`,`number_of_poll` as `num` FROM `poll_option` WHERE `id_poll`='21'") or die(mysql_error());
$i = 1;
$poll_num = 0;



while($poll = mysql_fetch_assoc($select_poll))
{

$percent = $poll['num'] * 100;
$option_percent = $percent / $poll_num;
$option_percent = floor($option_percent);
if($option_percent > 100)
{
$option_percent = round($option_percent, -2);
while($option_percent > 100)
{

$option_percent = $option_percent - 100;

}


}

$img = "template/DE_images/poll" . $i . ".gif";

echo "<div style='background: url(".$img."); width: ".$option_percent."px; height: 10px;'></div> - " . $poll['num'] . "(" . $option_percent . "%)<br>";
$i++;
}




}

else
{

echo "<p>Во время выполнения запроса произошла неизвестная ошибка.</p>";

}

Как мне решить эту проблему.
[/php]



Спустя 21 минута, 15 секунд (13.07.2012 - 18:34) DySprozin написал(а):

while($polle = mysql_num_rows($select_poll))
{

$poll_num = $poll_num + $polle['num'];

}


а в чем смысл этого цикла? ты говоришь скрипту: верни число ячеек и повторяй так до тех пор, пока число ячеек существует.

Скрипт берет для таблицы $select_poll число ячеек. Скажем, 10. Получаем бесконечный цикл:

while($polle = 10)
{

$poll_num = $poll_num + $polle['num'];

}


Цитата
$polle['num'];

и причем тут массив? mysql_num_rows() возвращает _целое число_

Спустя 12 минут, 17 секунд (13.07.2012 - 18:46) Shkiper написал(а):
DySprozin извини описался не mysql_num_rows a mysql_fetch_assoc. Мне нужно чтоб скрипт сосчитал все в столбце num и все это занес в $poll_num

Спустя 17 минут, 55 секунд (13.07.2012 - 19:04) DySprozin написал(а):
не понял... еще раз приведи неработающий код, но без описок (;

Спустя 1 час, 34 минуты, 35 секунд (13.07.2012 - 20:38) Shkiper написал(а):
<?php

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");


require './../data/db.php';

$id_option = $_POST['id_option'];
$update_poll = mysql_query("UPDATE `poll_option` SET `number_of_poll`=(`number_of_poll`+1) WHERE `id`='".$id_option."'") or die(mysql_error());

if($update_poll === true)
{

$select_poll = mysql_query("SELECT `name`,`number_of_poll` as `num` FROM `poll_option` WHERE `id_poll`='21'") or die(mysql_error());
$i = 1;
$poll_num = 0;



while($polle = mysql_fetch_assoc($select_poll))
{

$poll_num = $poll_num + $polle['num'];

}


while($poll = mysql_fetch_assoc($select_poll))
{

$percent = $poll['num'] * 100;
$option_percent = $percent / $poll_num;
$option_percent = floor($option_percent);
if($option_percent > 100)
{
$option_percent = round($option_percent, -2);
while($option_percent > 100)
{

$option_percent = $option_percent - 100;

}


}

$img = "template/DE_images/poll" . $i . ".gif";

echo "<div style='background: url(".$img."); width: ".$option_percent."px; height: 10px;'></div> - " . $poll['num'] . "(" . $option_percent . "%)<br>";
$i++;
}




}

else
{

echo "<p>Во время выполнения запроса произошла неизвестная ошибка.</p>";

}

Спустя 12 часов, 17 минут, 42 секунды (14.07.2012 - 08:56) DySprozin написал(а):
Цитата
  while($polle = mysql_fetch_assoc($select_poll))
    {
   
      $poll_num = $poll_num + $polle['num'];
   
    }


точно в этом цикле трабла? проверь:
		$ch = 0;
while($polle = mysql_fetch_assoc($select_poll))
{
if ($ch++ > 10000) exit('ошибка в цикле!');
$poll_num = $poll_num + $polle['num'];

}

Спустя 26 минут, 13 секунд (14.07.2012 - 09:22) Shkiper написал(а):
DySprozin обработчик действует но ответ присылает пустой, то есть вообще ничего не выводит даже ошибки интерпретатора.

Спустя 12 часов, 27 минут, 17 секунд (14.07.2012 - 21:50) DySprozin написал(а):
Shkiper
в таком случае, в начало файла:
  ini_set('display_errors', 1);
error_reporting(E_ALL);

Спустя 4 минуты, 35 секунд (14.07.2012 - 21:54) Shkiper написал(а):
DySprozin опять ничего не выдает. Пустота

Спустя 5 минут, 44 секунды (14.07.2012 - 22:00) DySprozin написал(а):
>Пустота

уху, посмотрел... а что ты хотел?

while($poll = mysql_fetch_assoc($select_poll)) - этот цикл у тебя никогда не запустится, ты уже промотал mysql_fetch_assoc($select_poll) в цикле выше. как вариант, запиши $polle['num'] в массив, а потом юзай вместо второго цикла foreach

Спустя 18 часов, 17 минут, 12 секунд (15.07.2012 - 16:17) Shkiper написал(а):
DySprozin это мне придеться сначало все это в масси загнать а потом уже все это в переменную прлюсовать - 2 цикла получаеться. Да и как сделать???

Спустя 16 часов, 36 минут, 30 секунд (16.07.2012 - 08:54) Shkiper написал(а):
Help me world peaple.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.