Доска объявлений на WordPress — плагин ads_ilicomua чаcть 3!

Сегодня наконец додумался как полностью убрать тормоза от моего плагина опитимизировав SQL запосы! Увеличение производительности в 10 раз! Вот только не могу понять как я раньше не додумался 🙁

Как это работало раньше:  сначала шла основная стандартная WP выборка постов, потом для каждого поста мы получали meta поля это +1 SELECT, затем поучали атачменты еще + 1 SELECT и затем для каждого атачмента получали его мета поля чтобы получить ссылку на превьюшки картинок итого на  каждый пост +3 запроса. Если у вас показывается 10 постов на странице то в среднем это +30-40 лишних запросов.

Теперь:  после того как получена основная выборка подключается фильтр posts_results собираем список ID всех записей делаем один запрос для того чтобы получить атачменты сразу для всех постов на странице

foreach ($posts as $key => $post) {
        $ar_post_id[] = $post->ID;
        $ar_link[$post->ID] = & $posts[$key];
   }
$st_id = @implode("','", $ar_post_id);
//сначала добываем атачменты
   $query = "SELECT $wpdb->posts.* FROM $wpdb->posts
WHERE  $wpdb->posts.post_parent IN('$st_id')
 AND $wpdb->posts.post_parent
   AND $wpdb->posts.post_type = 'attachment' ";
$files = $wpdb->get_results($query);

Далее обединяем в один массив ID постов и ID атачментов и получаем все мета поля для всех ID.

// складываем получаем общий список
   $ar_all_id = @array_merge($ar_post_id,$ar_file_id);
   $st_id = implode("','", $ar_all_id);
   $query = "SELECT * FROM $wpdb->postmeta WHERE post_id IN ('$st_id') ";
   $meta = $wpdb->get_results($query);

Вот так вот итого всего + 2 SQL запроса вместо 60 ! Причем посмотрел статистику SQL запросов эти два дополнительных SELECT выполняются в 10 раз быстрее чем основной запрос, где формируется выборка в соответствии с категорийе или тегом.
Даелее данные обрабатываются php сначала все мета данные раскидываются по записям и атачментам добавляем свойство $post->meta[$meta_key]=$meta_value; , а затем атачменты добавляются по своим записям $post->files[]=$file; ну это в общих чертах.
В общем скорость моей доски объявлений теперь практически ничем не уступает простому блогу.
Напоминая что все это будет работать если в настройках плагина включена опция применять шаблоны постов.
Если вы хотите самостоятельно обрабатывать объявления то все таки рекомендую вам воспользоваться этим фильтром подключив его в своем шаблоне в function.php, все мета данные и все картинки будут у вас сразу под рукой, а чтобы увидеть, что где лежит в теле основного цикла просто распечатайте:

echo ‘<pre>’; print_r( $post ); echo ‘</pre>’;

В ближайшее время выложу это фильтр отделено.

Скачать ads-wordpress

Проверен на версии 2.7, не пугайтесь размера архива там просто набор шрифтов для генерации капчи.

Чтобы обновится вручную   замените только файл ads.php ads_function.php,  это не заденет ваши старые настройки.

Обсуждение на сайте: wp.od.ua

Рубрика:  марта 18, 2009.
/ » » »


Похожие записи:

57 комментариев на «Доска объявлений на WordPress — плагин ads_ilicomua чаcть 3!»

  1. Уведомление: Ads WordPress 3.x - Объявления

  2. Иван говорит:

    Хочу такой модуль, пусть и платно 🙂

  3. Алексей говорит:

    Понятно, что будет платным, но, думаю, многие будут его покупать. Будем ждать.

  4. Alexander говорит:

    Скажите, а для 2.9 плагин идет? Или я неправильно делаю. Устанавливается как плагин, в настройках после активации есть ссылка на ads , но по ней нет перехода лальше. Может это из-за 2.9?

  5. admin говорит:

    с 2.9 идет

  6. Михалыч говорит:

    как прикрутить эту доску к блогу? например — как пункт меню. спасибо

  7. Уведомление: Ads WordPress 3.x - Шариг ты Балбез!

Новости

  • Власть Киева экономит на школьниках
  • Украина и Польша начнут общий проект
  • Украинцы отдадут за газ всю зарплату
  • В Одессе откроется волонтерский центр
  • Россияне будут въезжать в Украину по загранпаспортам
  • В Харькове укрепляют границы с Россией
  • Планы прекратить транзит газа в Европу
  • Комментарии


    Расширеный поиск +

    Другие статьи

    Объявления

    Мои проекты на WordPress

    Одесса Процессор Недвижимости, - специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой.
    �льичевск - доска объявлений городская доска объявлений, основные разделы: недвижимость, транспорт, услуги, работа, куплю-продам. Стоимость сборки $300 с установкой.
    HiTech.Expert- все о высоких технологиях - разработка, поддержка.

    Счетчики

    our blog