Mister_Black

Рейтинг
183
Регистрация
24.02.2009
SeVlad:
Вот теперь почти понятно ;) (но как делать - ща думалка не хочет работать)
Только теперь возникает след. вопрос: 20 - по каким критериям отбирать?

последние 20 id, с категории

SeVlad:

Что надо вместо случайной сортировки (какой критерий) - не понимаю.

К тому же... array_rand() во втором коде вычисляется на основании $args, который в свою очередь при формировании учитывает orderby :)

ну вобщем нужно чтоб сортировало рандомно из массива, допустим на 20 постов, предварительно делало выборку по id, а уже потом из полученного выводило ссылки на посты рандомом, короче чтоб не всю таблицу сортировало, а только эту выборку из 20 последних id, вот нашёл на хабре habrahabr.ru/post/132817/

был вот такой код:

    $args=array(

'caller_get_posts'=>'1',
'post__not_in' => $sticky,
'cat'=>'75',
'fields'=>'ids',
'post_per_page'=>'20',
'orderby'=>'ID',
);
$sk_count = new WP_Query($args);

$args=array(
'caller_get_posts'=>'1',
'post__not_in' => $sticky,
'showposts'=>'4',
'cat'=>'75',
<b> 'orderby'=>'rand'</b>
);
$sk_posts = new WP_Query($args);


В нем мы заменили выделенную строку на

'post__in'=>array_rand(array_flip($sk_count->posts),4)

код неполный так и не смог разобраться как к нему прикрутить выборку по категориям

SeVlad:
Я не понял на что.

$random_posts_ids = get_posts($args);

$rnd_posts = array_rand($random_posts_ids, $count);

вот типа такого, вместо RAND() не могу разобраться куда это прописать, в пхп не рублю

<?php

$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'orderby'=> 'rand', //sort by random
'showposts'=>5, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
// Rest is the same as the previous code
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<b>Related Posts:</b><p>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a><br />
<?php
}
echo '</p>';
}
wp_reset_query();
}
?>

подскажите, как в верхнем коде заменить 'orderby'=> 'rand' на что то типа

function show_random_posts_optimized($count = 3) {

$start = microtime(true);

$args = array(
'numberposts' => -1,
'fields' => 'ids',
'post_type' => 'any',
);

$random_posts_ids = get_posts($args);
$rnd_posts = array_rand($random_posts_ids, $count);

foreach ( $rnd_posts as $post_index ) {
$id = (int)$random_posts_ids[$post_index];
$post = get_post($id);
echo '<p><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></p>';
}
$stop = microtime(true);
echo '<p>Затраченное время: '.($stop - $start).'</p>';
}
Милованов Ю.С:
Попробуйте сделать KEY на дату - KEY post_date (post_date)

А чем Вас так Using filesort напрягает?

попробую, файлсорт в данном случае сортирует более 150к строк, процессор сервера это напрягает.

А тем временем :)

Kim Dotcom
24 hours until #Mega! One more day! Are you ready?

источник: https://twitter.com/KimDotcom

версия WP 2.8

что нужно добавить в код шаблона, чтобы на нём стал отображать показания WP-Tuner?

пока он только для админки показывает.

как отключить вызов 2-х опций, чтоб они не давали запросов к базе данных?

SELECT option_value FROM wp_options WHERE option_name = 'feedwordpress_automatic_updates' LIMIT 1

SELECT option_value FROM wp_options WHERE option_name = 'sidebars_widgets' LIMIT 1

виджеты и сайдбар у меня прописаны в коде темы, автоматическое обновление тоже отключено, пробовал в файл functions.php шаблона

добавлять

add_option('sidebars_widgets', $value, '', 'no');

но запрос по прежнему идёт, только уже с функций темы.

это надо добавлять ещё до вызова темы, а куда именно непонятно, может кто подскажет?

sj_object_cache+xcache помог, действительно лучшее решение для WP.

Evas:
Совместно с hyper-cache не пробовал, лишь с Super Cache.
По поводу мемлок - всё верно, должно работать.

отключил сейчас hyper-cache и нагрузка LA 0.14 0.13 0.12 стала меньше, с гипер-кешем было 0.50 0.30 0.25 похоже действительно генерация страничек в кеш много ресурсов жрёт, но без html кеша тоже никак, он спасает при обновлении сайта.

Всего: 713