Oznámení
Omlouváme se, provoz fóra byl ukončen
4474 záznamů ⇒ fetchAll ⇒ 500 Internal server error
Upozornění: Tohle vlákno je hodně staré.
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) ...