уменьшить запрос на показ последних фото&#107 уменьшить запрос на показ последних фото&#107
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

уменьшить запрос на показ последних фотоk

Started by 6yktonox, July 05, 2010, 09:24:46 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

6yktonox

Смысле в следующем.
Главная страница галереи загружается моментально, но стоит щелкнуть по одной из фотографий (которые отоборажаются как lastup) то процесс показа этой самой фотографии занимает около 10 секунд. Причину нашел.
Дело в том, что при выборе фотографии он строит и обрабатывает порядок всех (свыше 16000) фотографий моей галереи.
Каким кодом можно попроваить это? ну к примеру последнии 500 фотографий

Alex Revo

Нужно найти в коде где строятся запросы к БД и указать LIMIT

6yktonox

Quote from: Alex Revo on July 05, 2010, 09:45:35 AM
Нужно найти в коде где строятся запросы к БД и указать LIMIT

вот оригинал
case 'lastup': // Latest (most recent) uploads

        if ($cat && $CURRENT_CAT_NAME) {
            $album_name = cpg_fetch_icon('last_uploads', 2) . $lang_meta_album_names['lastup'] . ' - ' . $CURRENT_CAT_NAME;
        } else {
            $album_name = cpg_fetch_icon('last_uploads', 2) . $lang_meta_album_names['lastup'];
        }

        $query = "SELECT COUNT(*)
                FROM {$CONFIG['TABLE_PICTURES']} AS r
                INNER JOIN {$CONFIG['TABLE_ALBUMS']} AS a ON a.aid = r.aid
                $RESTRICTEDWHERE
                AND approved = 'YES'";

        $result = cpg_db_query($query);

        list($count) = mysql_fetch_row($result);
        mysql_free_result($result);

        list($ASC, $DESC, $limit, $flipped) = get_pic_data_ordering($count, $limit1, $limit2);

        $select_columns = implode(', ', $select_column_list);

        $query = "SELECT $select_columns
                FROM {$CONFIG['TABLE_PICTURES']} AS r
                INNER JOIN {$CONFIG['TABLE_ALBUMS']} AS a ON a.aid = r.aid
                $RESTRICTEDWHERE
                AND approved = 'YES'
                ORDER BY r.pid $DESC $limit";

        $result = cpg_db_query($query);
        $rowset = cpg_db_fetch_rowset($result);
        mysql_free_result($result);

        if ($flipped) {
            $rowset = array_reverse($rowset);
        }
       
        if ($set_caption) {
            build_caption($rowset, array('ctime'));
        }

        $rowset = CPGPluginAPI::filter('thumb_caption_lastup', $rowset);

        return $rowset;
        break;

Alex Revo


6yktonox

Quote from: Alex Revo on July 05, 2010, 11:40:24 AM
а что находится в $RESTRICTEDWHERE?
если я заменю на ORDER BY r.pid $DESC limit 0,100";
то он отображает посление 100 фотографий, не учитывая что мне нужно всего 2 ряда (lastup,2)
К тому же, при щелчке по любой из фотографий(последние добавления), он мне показывает полноразмерное изображение первой из последних добавленных

Alex Revo

я потому и спросил что в этой переменной, может там как раз были какие-то условия выборки

6yktonox

Quote from: Alex Revo on July 05, 2010, 11:57:33 AM
я потому и спросил что в этой переменной, может там как раз были какие-то условия выборки
нет. эта переменная пустая. выше я привел оригинальный код из funtions.inc.php
на данный момент я свою проблему не решил. все в оригинале. подскажите куда копать? где установить лимит на выборку последних, к примеру, 300 фотографий?

Alex Revo

Вы правильно привели код изменения, нужно смотреть там и дальше в CPGPluginAPI::filter('thumb_caption_lastup', $rowset)

6yktonox

Quote from: Alex Revo on July 05, 2010, 12:31:01 PM
Вы правильно привели код изменения, нужно смотреть там и дальше в CPGPluginAPI::filter('thumb_caption_lastup', $rowset)
прошу прощения, но что в нем нужно изменить? :)

Alex Revo

Я не знаю, нужно смотреть код и распутывать клубок )

6yktonox

Quote from: Alex Revo on July 05, 2010, 02:40:57 PM
Я не знаю, нужно смотреть код и распутывать клубок )
колдовство над кодом никаких результатов мне не дало. помогите?

6yktonox

чего только не пытался изменить. все хожу "вокруг да около", приведите пожалуйста готовый кусочек кода

6yktonox

неужели ни у кого не было подобной проблемы?

Plazik

Quote from: 6yktonox on July 30, 2010, 04:14:52 PM
неужели ни у кого не было подобной проблемы?
Отключи показ последних фоток на главной и сделай вместо этого показ последних измененных альбомов.

Makc666

В том коде, который Вы приводили, над строкой:
$query = "SELECT COUNT(*)
добавьте строку:
print "---->>> [$RESTRICTEDWHERE] <<<----<br />";

И покажите, что Вам будет выводится на той странице, где происходит долгий вывод.