shell脚本实现整站缓存和预缓存

VPS

将下面的代码保存为 siteurl.php 上传,例如网站目录下。

<?php
//输出整站 url 地址
//请根据网站实际路径修改,wp-blog-header.php 在网站根目录
require('/var/www/html/wp-blog-header.php');
$posts_to_show = 5000;
echo get_home_url();
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) {
    echo PHP_EOL;
    the_permalink();
}
/* 单页面 */
$mypages = get_pages();
if(count($mypages) > 0) {
    foreach($mypages as $page) {
       echo PHP_EOL;
       echo get_page_link($page->ID);
    }
}
/* 博客分类 */
$terms = get_terms('category', 'orderby=name&hide_empty=0' );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) {
    echo PHP_EOL;
    echo get_term_link($term, $term->slug);
    }
}
/* tags */
$tags = get_terms("post_tag");
foreach ( $tags as $key => $tag ) {
        $link = get_term_link( intval($tag->term_id), "post_tag" );
        if ( is_wp_error( $link ) )
        {
            return false;
            $tags[ $key ]->link = $link;
        }
    echo PHP_EOL;
    echo $link;
}

然后,编写 shell 代码如下:

cd /var/www/html
#通过 siteurl.php 脚本实时取出所有页面地址, 并每隔 0.5 秒请求一次,触发缓存。
for url in $(php /root/siteurl.php)
do
        wget -O /dev/null  $url
        sleep 0.5
done

将此代码按实际修改后保存为 g_cache.sh 上传,先手工执行看看是否成功:

bash /var/www/html/g_cache.sh

shell脚本实现整站缓存和预缓存
如图,如果没有报错,最后新增一个任务计划即可:

#每天凌晨 3 点全站预缓存一遍
0 3 * * * bash /root/g_cache.sh  >/dev/null 2>&1

可用 crontab -e 命令来编辑,编辑的是/var/spool/cron 下对应用户的 cron 文件,也可以直接修改/etc/crontab 文件。
最后,重启 crontab:

#/etc/rc.d/init.d/crond restart

© 声明:本站原创文章采用BY-NC-SA创作共用协议,转载时请标明本文地址;非原创(转载)文章版权归原作者所有。

RECENT POSTS

Stay Hungry. Stay Foolish.

数据库查询次数:11次,页面生成时间:0.029秒。