Вы не зашли.
#1.
TLENS
Off
(14)
Moderator
2011.08.16 01:01
Если это конечно возможно.
В общем следующий код должен выводить популярные или новые запросы в поиске.
Думал при записи запроса добавлять количество результатов но файлы добавляются каждых 5-10 мин.
И много вариантов будет не верно.
Код:
span style="color: #0000BB"><?php if (!$true) { $sort = $_GET['sort']; if ($sort == 'date') { $order = '`date`'; $Themes->content .= ' <a href="/search/">Популярные запросы</a> / '."\n" . ' <b>Последние запросы</b><br />' ."\n"; } else { $order = '`count`'; $Themes->content .= ' <b>Популярные запросы</b> / ' ."\n" . ' <a href="/search/?sort=date">Последние запросы</a><br />'."\n"; } $navig = new Navig("SELECT * FROM `query`", $_GET['page'], '?page={page}' . (($sort == 'date')? '&sort=date':''), 10); $q = mysql_query("SELECT * FROM `query` ORDER BY {$order} DESC LIMIT " . $navig->limit); while ($row = mysql_fetch_array($q)) { $like_arr = explode(', ', $row['query']); $like = ''; foreach ($like_arr as $v) { $v = trim($v); $like .= " `info` LIKE ('%$v%') &&"; } $like = substr($like, 0, -3); $query = mysql_query("SELECT * FROM `video` WHERE{$like}"); $Themes->content .= ' <div class="b"><img src="/themes/' . $_SET->themes . '/images/down.png" alt="image" />' . '<a href="/search/?query='. urlencode($row['query']) .'"><b>' . $row['query'] . '</b></a></div>' . "\n" . "\n" .' <div class="c">' . "\n"; $Themes->content .= ' Результатов: '. mysql_num_rows($query) . '<br />' ."\n" .' Запросов: ' . $row['count'] . '<br />' . "\n" .' </div>' . "\n\n"; } $Themes->content .= $navig->jamp(); } |
#3.
TLENS
Off
(14)
Moderator
2011.08.22 11:11
Паша слушай я чет ни как его не раздуплю.
Блин подключил статы, генерация страницы от 4 до 20 сек. (поиск в статы не включал)
Я вообще офигел. И это все базы забирают.
Стоит ли розбирать sphinx да и может отказаться от mysql и перейти на какую нить базу быстрее?
Но в половину я смогу оптимизировать код. Но не пойму почему один и тот самый запрос занимает то 1.5с то 8 сек. Из за чего это?
Отредактировано TLENS (2011.08.22 11:11)
для начала нужен сам запрос, explain его выполнения, структура бд, какие индексы стоят, кол-во записей в таблице?
#5.
TLENS
Off
(14)
Moderator
2011.08.23 12:12
Код:
lt;?$starttime = microtime(1);$q = mysql_query("SELECT * FROM `video`");echo round(microtime(1) - $starttime, 4); |
0,3 - 2,5 сек.
Отредактировано TLENS (2011.08.23 12:12)
не скриншот давай а вывод команды
SHOW CREATE TABLE а заодно
EXPLAIN SELECT * FROM `video`
#7.
TLENS
Off
(14)
Moderator
2011.08.23 20:08
Код:
CREATE TABLE `video` ( |
`id` int(11) unsigned NOT NULL default '0', |
`name` varchar(512) NOT NULL default '', |
`info` varchar(2048) NOT NULL, |
`url_file` varchar(500) NOT NULL, |
`url_flv` varchar(500) NOT NULL, |
`size` varchar(255) NOT NULL default '', |
`resolution` varchar(255) NOT NULL default '', |
`length` varchar(255) NOT NULL default '', |
`rating` int(11) unsigned NOT NULL default '0', |
`date` int(11) unsigned NOT NULL default '0', |
PRIMARY KEY (`id`) |
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
Добавлено спустя 2 минуты 2 секунды: Код:
array(20) { |
[0]=> |
string(1) "1" |
["id"]=> |
string(1) "1" |
[1]=> |
string(6) "SIMPLE" |
["select_type"]=> |
string(6) "SIMPLE" |
[2]=> |
string(5) "video" |
["table"]=> |
string(5) "video" |
[3]=> |
string(3) "ALL" |
["type"]=> |
string(3) "ALL" |
[4]=> |
NULL |
["possible_keys"]=> |
NULL |
[5]=> |
NULL |
["key"]=> |
NULL |
[6]=> |
NULL |
["key_len"]=> |
NULL |
[7]=> |
NULL |
["ref"]=> |
NULL |
[8]=> |
string(5) "73358" |
["rows"]=> |
string(5) "73358" |
[9]=> |
string(0) "" |
["Extra"]=> |
string(0) "" |
} |
что это за массив такой? плз, нормальный стринговый вывод.
#9.
TLENS
Off
(14)
Moderator
2011.08.24 14:02
Паша я вот целую ночь продолбался над оптимизацией то сейчас генерация 0.002 - 0.8 сек но в основном 0.006 - 0.08. это нормально?
Просто уже под утро пришла идея каждые 10 - 15 мин делать хеш базы данных.
т.е.
Код:
span style="color: #0000BB"><?php$q = mysql_query("SELECT * FROM `video` ORDER BY `rating` DESC");set_time_limit(999);$i = 1;$p = 1;$arr = array();while ($row = mysql_fetch_array($q)) { $arr[] = array( 'id' => $row['id'], 'name' => $row['name'], 'info' => $row['info'], 'length' => $row['length'], 'size' => $row['size'], 'rating' => $row['rating'], 'date' => $row['date'], 'resolution' => $row['resolution'] ); if ($i == 10) { file_put_contents('./data/' . $p . '.array', serialize($arr)); unset($arr); $i = 1; $p++; } else { $i++; }} |
один такой запрос занимает 4 сек.
+ еже один сортированный по дате 7к файлов. И пару там малых по рейтингам.
в целом 10-15 сек. хеша. Но вывод пользователю занимает 0.0002 - 5 сек.
Мне что интересно это вобще правильном или оно лишнее?
Просто места все равно десятки гигов лишних.
Отредактировано TLENS (2011.08.24 14:02)
да, это стандартное кэширование. только лучше взять какую-нить готовую библиотеку, типа Cache_Lite
#11.
TLENS
Off
(14)
Moderator
2011.08.25 12:12
Слушай исправь 'posted' все на свой ник пишет. Да и добавь колонку box
#12.
Nu3oN
Off
(11)
Moderator
2011.08.25 12:12
это я торможу? или можно вот это:
Код:
span style="color: #0000BB"><?php $arr[] = array( 'id' => $row['id'], 'name' => $row['name'], 'info' => $row['info'], 'length' => $row['length'], 'size' => $row['size'], 'rating' => $row['rating'], 'date' => $row['date'], 'resolution' => $row['resolution'] );?> |
заменить просто на:
Код:
span style="color: #0000BB"><?php$arr[] = $row;?> |
Я буду лучше голоден, но между креслом и рулем и на дороге.
#14.
Nu3oN
Off
(11)
Moderator
2011.08.25 12:12
Gemorroj написал:
да, это стандартное кэширование. только лучше взять какую-нить готовую библиотеку, типа Cache_Lite
а зачем использовать такой набор, если надо всего лишь массив сохранить в файл и потом получить?
Я буду лучше голоден, но между креслом и рулем и на дороге.
а удалять этот набор по прошествию какого-то времени? Cache_Lite хорошая легкая либа. Смысла использовать всето нее или аналогов свои кастомные решения не вижу.
#16.
Nu3oN
Off
(11)
Moderator
2011.08.25 12:12
Gemorroj написал:
а удалять этот набор по прошествию какого-то времени? Cache_Lite хорошая легкая либа. Смысла использовать всето нее или аналогов свои кастомные решения не вижу.
ну так он самозаменяется же! у файла статическое название './data/' . $p . '.array' и меняются только данные в нем!
Я буду лучше голоден, но между креслом и рулем и на дороге.
Nu3oN, ну, в этом случае да. Но со временем различного рода кэширований получится много. Для этого нужно использовать 1 прослойку. Эта 1 прослойка уже есть, и в нормальной реализации.
#18.
Nu3oN
Off
(11)
Moderator
2011.08.25 13:01
Gemorroj написал:
Nu3oN, ну, в этом случае да. Но со временем различного рода кэширований получится много. Для этого нужно использовать 1 прослойку. Эта 1 прослойка уже есть, и в нормальной реализации.
Я использую для этого свою реализацию, мне так проще! одна точка входа, сохранение, замена, удаление и проверка времени!
Тем более Cache_Lite использует еще и библу PEAR
Я буду лучше голоден, но между креслом и рулем и на дороге.
Nu3oN, ты уверен что твоя реализация лучше чем PEAR?
Все что ты перечислил есть и в Cache_Lite.
#20.
Nu3oN
Off
(11)
Moderator
2011.08.26 20:08
Gemorroj написал:
Nu3oN, ты уверен что твоя реализация лучше чем PEAR?
Все что ты перечислил есть и в Cache_Lite.
думаю да! в плане производительности да! моему классу не мешают сторонние методы, которые мне не нужны
Я буду лучше голоден, но между креслом и рулем и на дороге.
Nu3oN, сторонние методы никому не мешают. Кол-во функций/методов не влияет на производительность. Это равносильно тому, что код без комментариев - быстрее.
#22.
Nu3oN
Off
(11)
Moderator
2011.08.28 11:11
Все методы взаимосвязаны
Я буду лучше голоден, но между креслом и рулем и на дороге.