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

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

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

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

Previous topic - Next topic

0 Members and 3 Guests 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 />";

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