Доска объявлений на 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 = @("','", $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 = @($ar_post_id,$ar_file_id);
   $st_id = ("','", $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,  это не заденет ваши старые настройки.

Обсуждение на сайте:

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


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

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

  1. Pingback: Ads WordPress 3.x - Объявления

  2. Иван says:

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

  3. Алексей says:

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

  4. says:

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

  5. admin says:

    с 2.9 идет

  6. says:

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

  7. Pingback:

Новости

  • Кабмин разрешил вырубать парки под застройку
  • В Украине была проведена проверка всех имеющихся в стране аттракционов
  • Проверка аттракционов на Украине
  • Украина принимает Евро-2012!
  • ЧП в международном аэропорту г. Харькова
  • Украинское образование не пасет задних
  • Новая модернизированная армия Украины
  • Комментарии


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

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

    Объявления

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

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

    Счетчики