usergeyv
Знаток
- Регистрация
- 5 Июл 2013
- Сообщения
- 152
- Реакции
- 25
- Автор темы
- #1
Сразу к сути, использую полнотекстовый поиск по таблице dle_post
потом прохожу циклом и создаю массив с нужной мне информацией о статьи
сейчас нужно узнать информацию о файле, снова цикл по таблице dle_files и добавления инфы к массиву
В средним обработка занимает 30сек, как оптимизировать или уменьшить количество запросов к базе?
PHP:
////////1 запрос
$sql = $db->query( "SELECT *, MATCH title AGAINST ('$search' IN BOOLEAN MODE) as relev FROM dle_post WHERE MATCH title AGAINST ('$search') >0 ORDER BY relev DESC LIMIT 10");
PHP:
while($row = $db->get_row()) {
$result[] = array('title' => $row['title'],
'id_news' => $row['id'],
'add_date' => date('d-m-Y', $date),
'category' => $row['tags'],
'descriptions' => $full,
'images' => $images,
'info_torrent' => null);
}
}
PHP:
$stack_result = array ();
foreach ($result as $key => $value){
$news_id = $value["id_news"];
////////10 запросов
$tr = $db->super_query("SELECT f.id,f.torrent_size,f.md5,f.sha1, f.name,f.onserver, HEX(f.info_hash) AS info_hash, f.size, f.leechers, f.seeders, f.completed, f.gold, f.check, SUM(m.leechers) AS m_leechers, SUM(m.seeders) AS m_seeders, SUM(m.completed) AS m_completed FROM dle_files as f LEFT JOIN dle_tracker_multitracker as m ON (f.id=m.fid) WHERE f.news_id='{$news_id}' AND f.onserver LIKE '%.torrent' GROUP BY f.id ORDER BY f.id DESC");
if($tr['id']) {
////////10 запросов
$m_tr = $db->query("SELECT link FROM dle_tracker_multitracker WHERE fid='{$tr['id']}' ORDER BY id ASC");
while ($mt = $db->get_row($m_tr)) {
$trackers[] = $mt['link'];
}
$magnet_link = makeMagnetLink($tr['info_hash'],$tr['name'],$tr['size'],$trackers);
$result = array(
'size_file' => $tr_size,
'name_tor' => $name_tor,
'download' => $download_url,
'magnet_link' => $magnet_link,
'torrent_all_leechers' => $torrent_all_leechers,
'torrent_all_seeders' => $torrent_all_seeders,
'torrent_all_completed' => $torrent_all_completed,
'torrent_size' => $size,
'md5' => $md5,
'sha1' => $sha1,
);
}
$value["info_torrent"] = $result;
array_push($stack_result,$value);
}