tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

4474 záznamů ⇒ fetchAll ⇒ 500 Internal server error

před 9 lety

Gaudentius
Člen | 190

Ahoj vypisuji si log, kde mám 4474 záznamů:

return dibi::fetchAll('SELECT * FROM [:net:log]');

ale vše skončí bílou stránkou, ani laděnka nevyběhne a ve firebugu vyskočí hláška „NetworkError: 500 Internal Server Error“ – podle mě to bude problém optimalizace, protože, když mám v tabulce 10 záznamů, tak vše funguje jak má.

tbl:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `net_log`
-- ----------------------------
DROP TABLE IF EXISTS `net_log`;
CREATE TABLE `net_log` (
  `log_id` int(11) NOT NULL AUTO_INCREMENT,
  `log_name` varchar(255) DEFAULT NULL,
  `log_description` mediumtext,
  `log_date` date DEFAULT NULL,
  `log_time` time DEFAULT NULL,
  `log_timestamp` int(11) DEFAULT NULL,
  `id_admin` int(11) DEFAULT NULL,
  `log_presenter` varchar(255) DEFAULT NULL,
  `log_action` varchar(255) DEFAULT NULL,
  `log_params` mediumtext,
  `log_status_code` int(11) DEFAULT NULL,
  `log_ip` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`log_id`),
  KEY `log_date` (`log_date`),
  KEY `log_presenter` (`log_presenter`),
  KEY `log_action` (`log_action`),
  FULLTEXT KEY `log_name` (`log_name`),
  FULLTEXT KEY `log_description` (`log_description`)
) ENGINE=MyISAM AUTO_INCREMENT=19949 DEFAULT CHARSET=utf8;

v čem by mohla být chybka?

před 9 lety

paranoiq
Člen | 388

fetchAll() musí do paměti zkpírovat všechny záznamy, na což omezená paměť procesu samozřejmě nestačí. vypisuj je postupně pomocí fetch()

před 9 lety

PetrP
Člen | 587

Pomoci fetch myslel treba takto:

return dibi::query('SELECT * FROM [:net:log]');
...
foreach ($foo as $row) ...