Моя функция набирать просмотры:
Код: Выделить всё
function get_page_views($post_id)
{
$cache_key = 'post_views_'.$post_id;
$views = wp_cache_get($cache_key);
if ($views === false) {
if (function_exists('stats_get_csv')) {
$args = array('days' => -1, 'limit' => -1, 'post_id' => $post_id);
$result = stats_get_csv('postviews', $args);
$views = intval($result[0]['views']);
} else {
$views = 0;
}
wp_cache_set($cache_key, $views, 'post_views', 300);
}
return $views;
}
Код: Выделить всё
foreach ($results as $post) {
$views = wp_cache_get('post_views_'.$post->ID);
if ($views === false) {
$views = get_page_views($post->ID);
error_log('Visitas obtenidas de la forma original para el post_id: '.$post->ID.', visitas: '.$views);
} else {
error_log('Visitas obtenidas de la caché para el post_id: '.$post->ID.', visitas: '.$views);
}
fputcsv($output, array(
$post->ID,
$post->post_title,
get_the_author_meta('display_name', $post->post_author),
implode(', ', wp_get_post_categories($post->ID, ['fields' => 'names'])),
$views,
$post->post_date,
));
ob_flush();
flush();
}
Я пытался выполнить прямой SQL-запрос, чтобы получить просмотры сообщений, вместо вызова stats_get_csv для каждого. Но это не сработало, поскольку извлекает разные представления, а не одни и те же.
Я подумал об использовании переходных процессов для кэширования результатов stats_get_csv и избежания повторных вызовов во время экспорта. . Но нет, это не улучшило ситуацию.
Я попытался получить все данные одновременно, чтобы избежать повторных запросов. Но у меня есть тайм-аут, прежде чем я смогу экспортировать. Облом.
Честно говоря, не знаю, что еще попробовать. Я чувствую себя мемом о парне, смотрящем на лист бумаги со страдающим лицом.
Если у кого-то есть идеи или опыт работы с этой функцией и он может мне помочь, я будьте вечно благодарны. Мне нужно решить эту проблему, иначе мой плагин будет чертовски медленным.
Подробнее здесь: https://stackoverflow.com/questions/784 ... -my-plugin