Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: как вывести большое число строк (напр. архив чата)

Сообщения:  [1-5] 

 
 автор: irr   (06.10.2005 в 14:34)   письмо автору
 
   для: irr   (06.10.2005 в 07:50)
 

пардон, спасибо всем большое! я нашел ошибку: в сообщении одного из посетителей чата содержалась meta-тега с refresh content, а у меня на тот момент еще не была установлена функция strip_tags для проверки сообщений на содержание тегов. вот так все было просто на самом деле :)).

   
 
 автор: cheops   (06.10.2005 в 13:03)   письмо автору
 
   для: irr   (06.10.2005 в 07:50)
 

Попробуйте заменить строки
<?php
    $cnick 
mysql_result($result,$i,"chat_nick"); 
    
$cmes mysql_result($result,$i,"chat_mes");
?>

на
<?php
    $cnick 
htmlspecialchars(mysql_result($result,$i,"chat_nick")); 
    
$cmes htmlspecialchars(mysql_result($result,$i,"chat_mes"));
?>

А mysql_result() на mysql_fetch_array() - mysql_result() - это самая медленная функция из MySQL-функций.

   
 
 автор: cernos   (06.10.2005 в 12:14)   письмо автору
 
   для: irr   (06.10.2005 в 07:50)
 

Не пойму вот эту часть кода, это ж слишком тормозит процесс работы:

$number=mysql_num_rows($result); 
  for ($i=0; $i<$number; $i++) 
  { 
    $ctime = mysql_result($result,$i,"chat_time"); 
    $a = strtotime($ctime)+28800; 
    $ctime = date("y-m-d h:i:s",$a); 
    $cnick = mysql_result($result,$i,"chat_nick"); 
    $cmes = mysql_result($result,$i,"chat_mes"); 
    $color = mysql_result($result,$i,"chat_color"); 
    $arch=$arch."<font color='$color'>$ctime [<b>".$cnick."</b>] $cmes </font><br>\n"; 
  }


Можно э сделать всё намного проще, с помощью while


$result=mysql_query($query);
while($res=mysql_fetch_array($result))
{
   $ctime = $res['chat_time']; 
    $a = strtotime($ctime)+28800; 
    $ctime = date("y-m-d h:i:s",$a); 
    $cnick = $res['chat_nick']; 
    $cmes = $res['chat_mes']; 
    $color = $res['chat_color']; 
    $arch=$arch."<font color='$color'>$ctime [<b>".$cnick."</b>] $cmes 
}


А можно упростить до минимума:

$result=mysql_query($query);
while($res=mysql_fetch_array($result))
{
    $arch=$arch."<font color='".$res['chat_color']."'>
".date("y-m-d h:i:s",strtotime($res['chat_time'])+28800)." [<b>".$res['chat_nick']."</b>]".$res['chat_mes']."\n";
}


Просто таким образом, будет быстрее работать...

   
 
 автор: himic   (06.10.2005 в 08:11)   письмо автору
 
   для: irr   (06.10.2005 в 07:50)
 

А может ты злоумышленник хотишь загрузить сервер?
А на хостинге стоит ограничение. представь человек двадцать такие запросы делать будут
Попробуй выводить частями
Вывел часть, очисть буфер запроса(вроде такое можно)
Потом другую итд
Или речь не про это?

   
 
 автор: irr   (06.10.2005 в 07:50)   письмо автору
 
 

здравствуйте! не могу найти решение проблемы: у меня есть чат (php + mysql), мне нужно вывести архив сообщений за n-ое количество часов (например, за 12). когда сообщений за заданный период времени слишком много, то этот архив почему-то начинает постоянно самоперезагружаться! хотя никаких refresh нигде нет. в чем может быть дело? 500 сообщений еще нормально выводит. я понимаю, что можно сделать вывод постранично, но мне все же нужно чтобы все было сразу :).

код скрипта вот:

<?php                                    
require('connect.php');
require(
'menu.php');

$hoursget=12;

echo 
"<h1 align='center'>Архив чата за последние 12 часов</h1>";

for (
$hours=1$hours<=$hoursget$hours++)
{

$arch="";
$hsta=$hours*60 60;
$hfin=$hours*60;

$query="SELECT * FROM chat WHERE chat_time < NOW() - INTERVAL '$hsta' MINUTE AND chat_time > NOW() - INTERVAL '$hfin' MINUTE ORDER BY chat_time DESC";
$result=mysql_query($query);
$number=mysql_num_rows($result);

  for (
$i=0$i<$number$i++)
  {
    
$ctime mysql_result($result,$i,"chat_time");
    
$a strtotime($ctime)+28800;
    
$ctime date("y-m-d h:i:s",$a);
    
$cnick mysql_result($result,$i,"chat_nick");
    
$cmes mysql_result($result,$i,"chat_mes");
    
$color mysql_result($result,$i,"chat_color");
    
$arch=$arch."<font color='$color'>$ctime [<b>".$cnick."</b>] $cmes </font><br>\n";
  }   
echo 
$arch;
$arch="";
}
mysql_close($db);
?>

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования