Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Интеряейс mysqli не тянет большой объём

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: обработка больших запросов (буферизованные и нет)
Okula
Отправлено: 09 Июня, 2011 - 15:00:31
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




У меня вопрос:
что может стать проблеммой не полного отображения страницы при обработке больших результатов с базы данных mysql при включенных ошибках и неограниченном времени выполнения скрипта.
error_reporting(E_ALL);
set_time_limit(0);
записей в таблице ~500000
из них в ~140000 в одной категории. при просмотре которой возникает данная ошибка отображения.
(записи выводятся с учётом постраничной навигации, интерфейс соедиения с БД mysqli)
Тип таблицы: MyISAM
Пробовал уотключать буферизацию запроса (константа MYSQLI_USE_RESULT), не помогло.
Может идеи у кого какие есть?
ошибка возникает тут http://status[dot]goldsmart[dot]ru/index.php?id=39
в других же категориях где не так много записей всё норм.
Структура таблицы:
id | id_s | st | nick | pl | mn
уникальный номер | номер категории | сам статус | имя автора | голосовавшие за | голосовавшие против
 
 Top
EuGen Администратор
Отправлено: 09 Июня, 2011 - 15:02:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если попробовать запустить скрипт через консоль (не через браузер), какой будет вывод? Тоже наполовину?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Okula
Отправлено: 09 Июня, 2011 - 15:05:34
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




EuGen пишет:
Если попробовать запустить скрипт через консоль (не через браузер), какой будет вывод? Тоже наполовину?

я с консолью не работал никогда, можешь команду составить?
прикол в том что mysqli не тянет уже когда результат 140000, а если 90000 то норм Улыбка
 
 Top
EuGen Администратор
Отправлено: 09 Июня, 2011 - 15:31:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так а в чем трудность?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. php script.php > ~/tmp && cat ~/tmp | less
  3.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Okula
Отправлено: 09 Июня, 2011 - 15:41:18
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




EuGen пишет:
Так а в чем трудность?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. php script.php > ~/tmp && cat ~/tmp | less
  3.  


Вот пробовал прорписывать так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. php D:\Server\home\localhost\st\index.php > ~/tmp && cat ~/tmp | less

пишет что системе не удаётся найти указанный путь
 
 Top
EuGen Администратор
Отправлено: 09 Июня, 2011 - 15:43:37
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А, у Вас Windows.
Тогда просто
PHP:
скопировать код в буфер обмена
  1.  
  2. php D:\Server\home\localhost\st\index.php > D:\Server\home\localhost\st\tmp
  3.  

Если у Вас не установлен интерпретатор командной строки (обычно он лежит в c:\php\php.exe) - нужно будет установить.
Затем смотрите файл D:\Server\home\localhost\st\tmp


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Okula
Отправлено: 09 Июня, 2011 - 15:55:22
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




EuGen, а как устоновить его? интерпритатор. Мне написали при выполнении команды
CODE (htmlphp):
скопировать код в буфер обмена
  1. "php" не является внутренней или внешней командой, исполняемой программой или пакетным файлом

а на диске C нет такой папки
 
 Top
EuGen Администратор
Отправлено: 09 Июня, 2011 - 16:35:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Также, как и все другие программы.
Дистрибутив найдете на php.net


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Okula
Отправлено: 09 Июня, 2011 - 22:56:45
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Возникла такая мысль, может это из-за класса навигации. Класс представлен ниже
PHP:
скопировать код в буфер обмена
  1. class Navigation {
  2.  
  3.     private $page, $col;
  4.     public $pnumber, $begin;
  5.  
  6.     function  __construct($page, $pnumber, $col) {
  7.         $this->page = $page;
  8.         $this->pnumber = $pnumber;
  9.         $this->col = $col;
  10.         $this->navi();
  11.     }
  12.  
  13.     /**
  14.      * Готовим данные для навигации
  15.      */
  16.     private function navi() {
  17.         if($this->page == 0) $this->page = 1;
  18.         if($this->pnumber < 5) $this->pnumber = 5;
  19.         if($this->col/$this->pnumber < $this->page) $this->page = ceil($this->col/$this->pnumber);
  20.         $this->begin=($this->page-1)*$this->pnumber;
  21.     }
  22.  
  23.     /**
  24.      * Постаничная навигация
  25.      * @param int $id  подстановка идентификатора
  26.      * @param string $act дополнительный входной параметр
  27.      * @param string $sort Сортировка
  28.      */
  29.     function Navigation($id = 0, $act = NULL, $sort = "") {
  30.         $act = ($act !== NULL) ? $act : "";
  31.         $pid = ($id !== 0) ? "id=".$id."&" : "";
  32.         $s = !empty($sort) ? $sort : "";
  33.  
  34.         $number = (int) ($this->col/$this->pnumber);
  35.         if($this->col >= ($this->pnumber+1)) {
  36.             if((float) ($this->col/$this->pnumber)-$number !=0) $number++;
  37.             #-------------#
  38.            $all = ceil($this->col/$this->pnumber); $i=1;   $c="";   $tt=$this->page;
  39.             while($i<=$all) {
  40.                 if($i<=3  || $i==$tt- 1  || $i==$tt || $i==$tt+1  || $i>=$all-2) {
  41.                 $ii="<a href='".$_SERVER['PHP_SELF']."?".$act.$pid."page=".$i.$s."'>".$i."</a>";
  42.                 if($i==$tt) {
  43.                     if($i!=$all){ $c.= "<td class='str'>".$i."</td>";
  44.                     } else {$c.= "<td class='str'>".$i."</td>";}
  45.                 }
  46.                 else { if($i!=$all){ $c.= "<td class='str'>".$ii."</td>";} else{$c.= "<td class='str'>".$ii."</td>";}
  47.                 }
  48.                 } else {$c.= "<td class='str'>.</td>"; }
  49.                 $i++;
  50.             }
  51.             #-------------#
  52.            $c = preg_replace("/(<td class='str'>\.<\/td>)+/", "<td class='str'>...</td>", $c);
  53.  
  54.             echo "<table><tr>";
  55.             if($this->page == 1) echo "<td class='str'>&larr; Пред.</td>";
  56.             if($this->begin>0) {
  57.                 echo "<td class='str'><a href='".$_SERVER['PHP_SELF']."?".$act.$pid."page=".($this->page-1).$s."'>&larr; Пред.</a></td>";
  58.             }
  59.             echo $c;
  60.             if($this->col > $this->begin+$this->pnumber) {
  61.                 echo "<td class='str'><a href='".$_SERVER['PHP_SELF']."?".$act.$pid."page=".($this->page+1).$s."'>След. &rarr;</a></td>";
  62.             }
  63.             if($number == $this->page) echo"<td class='str'>След. &rarr;</td>";
  64.             echo "</tr></table>";
  65.             #-------------#
  66.            if($all > 20) {
  67.                 echo "<div class='wh'><form action='".$_SERVER['PHP_SELF']."?".$act.$pid."page=".$this->page.$s."' method='get'>";
  68.                 if($id !== 0) echo "<input type='hidden' name='id' value='".$id."'/>";
  69.                 if(!empty($act)) {
  70.                     preg_match("~&([^=]+)=([^&]+)&$~", $act, $inf);
  71.                     echo "<input type='hidden' name='".$inf[1]."' value='".$inf[2]."'/>";
  72.                 }
  73.                 if(!empty($s)) {
  74.                     preg_match("~^&([^=]+)=([^&]+)~", $s, $inf);
  75.                     echo "<input type='hidden' name='".$inf[1]."' value='".$inf[2]."'/>";
  76.                 }
  77.                 echo "Страница: <input type='text' name='page' size='3' value=''/>
  78.                <input type='submit' value='Перейти'/></form></div>";
  79.             }
  80.         }
  81.     }
  82.  
  83. }

(Добавление)
Да ошибка в методе Navigation() в классе, он почему-то перемтаёт работать при больших объёмах, может зацикливается цикл...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB