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. PowerDesigner 生成C#实体模版代码

    操作步骤见:  https://blog.csdn.net/da454122373/article/details/54346217 最后的template 模版代码如下: .if (%isValid ...

  2. UWP开发入门(六)——对多设备不同分辨率显示效果的讨论

    本篇不涉及具体代码,而是把实际开发UWP APP的过程中,遇到的不同设备,不同分辨率显示效果差异的问题进行讨论.希望能够抛砖引玉,和各位擦出一些火花. 蜀黍我目前是在做一套牛逼的UWP APP啦,目标 ...

  3. 【转】SQL FOR XML简介及用法

    摘要:sql中的for xml语法为表转化为xml提供了很好的支持,当然使用同样的程序语言也能够达到同样的效果,但是有了for xml将使得这一切更加的方便. 主要内容: Select 的查询结果会作 ...

  4. 【转】Lucene工作原理——反向索引

    原文链接:  http://my.oschina.net/wangfree/blog/77045 倒排索引 倒排索引(反向索引) 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项 ...

  5. Java基础学习篇---------String、集合的学习

    一.String常用的方法: 1. == 实质比较两个对象的地址数值 String a = "hello"  (hello为匿名对象) String a1 = "hell ...

  6. 服务器 apache配置https,http强制跳转https(搭建http与https共存)

    公司linux服务器上的nginx的已经改成https了,现在还剩下一个windows云服务器没配置. 环境 windows wampserver2.5 64位 1.腾讯云申请的ssl 包含三个文件: ...

  7. MVC4删除 pages引发的异常 System.Web.Optimization找不到引用

    在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...

  8. centos7在分区上建立文件系统和挂载

    在上一篇博客中,我们只说了硬盘的分区,既然进行分区,那么我们就要知道如何使用这些分区,就是接下来的建立文件系统和挂载. mkfs(make filesystem)格式化,建立文件系统 可以看到各种文件 ...

  9. 错误处理Cannot load JDBC driver class 'oracle.jdbc.drive

    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnec是由于<Resource name=&qu ...

  10. struts2中s:select标签的使用

    1.第一个例子: <s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00& ...