wp-cron的问题
    Wordpress内置wp-cron的模块,可以用来执行定时任务,比如定时检查更新,定时发布文章等都需要用到,属于必备功能。但是该模块的特点是:它只能在用户发起请求时检查定时任务。这个特点导致了一个问题:没有用户访问时,那定时任务就得不到执行;有用户访问时,某个用户会因为定时任务在执行而响应很慢甚至超时。因此,在生产环境下使用wp-cron是不明智的。
    更好的做法是开启一个独立的进程执行这些定时任务——这里使用crontab + wp-cli实现这种做法。(如果你不使用wp-cli,也可以,但是wp-cli,但是在有wp-cli的情况下,你可以方便地查看各个任务的具体执行情况,和对任务做精确的控制。没有命令行工具的情况下就有点要靠猜了)

两步完成优化
1.禁用wp-cron:修改wp-config.php,设置DISABLE_WP_CRON为true:
define('DISABLE_WP_CRON', true);
2.通过crontab定期执行任务
添加以下任务到crontab中(每分钟检查过期任务,如果有就执行)
* * * * * cd /var/www/html && /usr/local/bin/wp cron event run --due-now > /dev/null
就是这么简单。 

如何判断定时任务正常执行?
1.首先确认crontab有正常调用你的命令
查看下cron的日志:  tail /var/log/cron,看到类似如下的日志说明crontab有在正常调用命令。
Dec   :: aliyun CROND[]: (liu) CMD (cd /var/www/html && /usr/local/bin/wp  cron event run --due-now > /dev/null)
Dec :: aliyun CROND[]: (liu) CMD (/usr/lib64/sa/sa1 )
Dec :: aliyun CROND[]: (liu) CMD (cd /var/www/html && /usr/local/bin/wp cron event run --due-now > /dev/null)
2.然后确认你的命令有正确执行

两种方法:
一、可以去掉`> /dev/null`,这样每次crontab执行的输出都会写入邮件,通过mail命令可以看到每次的执行结果。 
二、另外一种判断方法是,通过wp cron event list判断,下面着重讲这个方法。

如下示例,你会看到有一些任务的next_run_relative为now,它们表示这些任务该执行了。如果你过了1分钟再查看,它们的状态都没变化,说明任务并没有得到执行。
$wp cron event list
+------------------------------------------+---------------------+-----------------------+------------+
| hook | next_run_gmt | next_run_relative | recurrence |
+------------------------------------------+---------------------+-----------------------+------------+
| jetpack_display_posts_widget_cron_update | -- :: | now | minutes |
| jetpack_sync_cron | -- :: | now | minutes |
| jetpack_sync_full_cron | -- :: | now | minutes |
| jp_sitemap_cron_hook | -- :: | minute seconds | 12小时 |
| jetpack_clean_nonces | -- :: | minutes seconds | 1小时 |
。。。
+------------------------------------------+---------------------+-----------------------+------------+
反之,如果任务得到了执行,那些为`now`的状态应该会变掉,如下面的结果所示:
$wp  cron event list
+------------------------------------------+---------------------+-----------------------+------------+
| hook | next_run_gmt | next_run_relative | recurrence |
+------------------------------------------+---------------------+-----------------------+------------+
| jetpack_sync_cron | -- :: | seconds | minutes |
| jetpack_sync_full_cron | -- :: | seconds | minutes |
| jetpack_display_posts_widget_cron_update | -- :: | minutes seconds | minutes |
| jetpack_clean_nonces | -- :: | minutes seconds | 1小时 |
。。。
+------------------------------------------+---------------------+-----------------------+------------+

配置过程中碰到的问题
Q:执行wp cron event run --due-now时,可能出现下面的提示:
PHP Notice: Undefined index: HTTP_HOST
A:在wp-config.php中添加

if (defined('WP_CLI') && WP_CLI) {
$_SERVER['HTTP_HOST'] = 'localhost';
}

Wordpress性能优化:使用crontab+wp-cli代替wp-cron的更多相关文章

  1. WordPress 性能优化:为什么我的博客比你的快

    WordPress 很慢? 很多博主都会感觉 WordPress 很慢?作为全世界最常用的建站和博客系统 WordPress 来说,在性能设计上肯定不会有太大的问题,WordPress 开发团队也肯定 ...

  2. WordPress 全方位优化指南(下)

    上一篇 WordPress 全方位性能优化指南(上)主要从网站性能指标.优化缓存.MySQL 等方面给大家介绍了如何进行 WordPress 性能优化,但还远远不够,毕竟像 WordPress 这样的 ...

  3. WordPress 全方位优化指南(上)

    作为一个全面的 WordPress 性能优化教程,本文旨在帮助读者排查 WordPress 网站的性能问题,同时也提供网站前端优化加速的建议. 如果你曾经遇到过 WordPress 管理界面加载缓慢. ...

  4. WordPress 性能检测与速度优化

    来源:SayBlog.Me [摘要]在如何提升WordPress性能与速度方面多花一些时间是值得的,本文下面为大家就如何提升WordPress运行效率列出了几点建议以供参考. 你的WordPress博 ...

  5. 第二十二章 Nginx性能优化

    一.性能优化概述 1.我们需要了解 1.首先需要了解我们当前系统的结构和瓶颈,了解当前使用的是什么,运行的是什么业务,都有哪些服务,了解每个服务最大能支撑多少并发.比如nginx作为静态资源服务并发是 ...

  6. MySQL性能优化:索引

    MySQL性能优化:索引 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序.数据库使用索引以找到特定值,然后顺指针找到包含该值的行.这样可以使对应于表的SQL语句执 ...

  7. CentOS 6.5 安全加固及性能优化 (转)

    通过修改CentOS 6.5 的系统默认设置,对系统进行安全加固,进行系统的性能优化. 环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5- ...

  8. Windows phone应用开发[21]-图片性能优化

    在windows phone 中常在列表中会常包含比较丰富文字和图片混排数据信息. 针对列表数据中除了谈到listbox等控件自身数据虚拟化问题外.虽然wp硬件设备随着SDK 8.0 发布得到应用可使 ...

  9. WordPress数据库优化技巧

    各位站长都知道wordpress用久了就会越来越慢.今天就给大家介绍如何给自己的wordpress提速,分两种方法:1.插件属性wordpress的都知道其插件是相当的多,只要你能想得到的基本都有,在 ...

随机推荐

  1. Python:Selenium+Webdriver安装

    本人小白一枚,今天在使用selenium+webdriver的时候遇到了一个小问题: WebDriverException: 'chromedriver' executable needs to be ...

  2. 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

    前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...

  3. 上云、微服务化和DevOps,少走弯路的办法

    本文由  网易云发布. 作者:张亮 如果说一个项目的发展历程就像一段未知的旅程,那<云原生应用架构实践>就像一张地图,基于前人的探索标明了在这段旅途中将会碰到的障碍,并注明了越过这些障碍的 ...

  4. Mysql-基础+安装指南

    安装指南: https://www.cnblogs.com/majj/p/9160383.html  小马哥 下载完后初始化操作数据库: 1. 将文件放在 : G:\软件\mysql-8.0.15-w ...

  5. python爬虫3——获取审查元素(板野友美吧图片下载)

    测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...

  6. Access 2010 应用基础 单元三:SQL查询

    导语:Access查询中拉差距的部分 简单查询 [是基于单个表的查询] 无条件从数据表中选择部分字段 Select 字段列表 from 数据表 无条件从数据表中选择全部字段 Select 字段列表 f ...

  7. ajax post 400 bad request

    是前端ajax没有加声明:contentType:'application/json',

  8. (samba启动失败)smb.service: main process exited, code=exited, status=1/FAILURE

    按照指示,前往:journalctl -xe 没什么发现,搜的时候有人说也可以查看 journalctl -r 打出来之后我也看不出什么门道来 又看到有人说 smb 方面可以看看 testparm 我 ...

  9. Google Guava 类库简介

    Guava 是一个 Google开发的 基于java的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency librar ...

  10. Windows下的Nginx安装与配置(PHP)

    因为一直用Apache作为服务器,对Apache的使用和配置已经相对熟悉,今天换了一下nginx的服务器,整个配置流程相对比较简单,php的配置没有任何变化. 主要的参考文档为 http://blog ...