2011/08/23 据几个博友反应,有一个站点不能定时发布,其余都正常。使用 co.cc 域名搭建了一个测试 WordPress,使用 DNSPod 域名解析到与本站同样的主机,依然不能正常使用定时发布功能。

2011/08/24 在 DNSPod 版主和主机提供商的建议下,使用了一个第三方的 DNS 服务,以判断哪里出现的错误。

2011/08/25 建立了两个测试域名:

testmode.co.cc nameserver = v1s2.xundns.com
testmode.co.cc nameserver = v1s1.xundns.com
testmode1.co.cc nameserver = f1g1ns2.dnspod.net
testmode1.co.cc nameserver = f1g1ns1.dnspod.net

使用 DNSPod 的站点无法定时发布,使用 DNS.la 偶而不能发布。看来问题出在 DNSPod 处的可能性较大,只是不知道这是否与 DNSPod 与空间主机的通讯有关。

7月23日将本站的 DNS 服务器换到了 DNSPod,看重的就是它的解析时间要比空间提供商的快了 200-300ms。

但后来发生了诸多问题:

  1. WP-DBManager 的定时备份功能失效,options 中的下次更新日期永远停留在上次更新插件设置的时间。
  2. XML-Sitemap 检测日志更新功能失效,只能手动重建 sitemap,并且计算日志优先度功能失效。
  3. WordPress 的定时发布功能失效。
  4. 无法接收任何 pingback 和 trackback。

在网上搜索解决方案时,发现一个解决定时发布任务计划失败的方法:将/wp-includes/cron.php文件中的 timeout 修改为1或更大的值,实测无效。因此得知任务计划失败显然不是由性能引起的。

这些问题的存在严重影响了 WordPress 的正常使用,令我很不爽,经观察发现上述问题都或多或少与计划任务有关系,wp-cron.php是 WordPress 自带的计划任务引擎,用来处理 WordPress 的定时任务,那么看起来问题就发生在 wp-cron 上,禁用所有插件,甚至在此域名的二级目录下搭建了一个测试用 WordPress(3.1.4 与 3.2.1)所有问题也均能重现,而最近一个月除了对主题进行过修改之外就是使用了 DNSPod 的 DNS 服务器。重新将 DNS 设置成默认,几分钟之后,WP-DBManager 与 XML-Sitemap 工作均恢复正常。

看起来一切问题的罪魁祸首就是 DNSPod,由于 PHP 的特性,所有的定时任务都是实际都是伪定时任务,需要被来访者激活,DNSPod 因某种原因,阻碍了来访者触发 wp-cron 功能,导致一切定时计划任务失效。

以上问题的原因纯属个人无责任推断,当然也有可能是个人设置导致的问题(但是一切二级域名、MX 记录等都正常),该问题是否具有普遍性,还需要进行调查。

  1. […] DNSPOD 导致 wp-cron 失效? http://xia.im/dnspod-makes-wp-cron-not-work/ […]

  2. 汗,我也碰到这个问题了,原来真是 DNSPOD 的问题呀!我两个网站现在都是出现楼主说的问题了!

  3. 搜索过来的,换用 dnspod 后,出现同样的问题。

  4. 换个 DNS 试试,比如本地用 8.8.8.8/8.8.4.4

    • @Dianso
      本地应该没有问题,一个月的时间 DNS 的数据肯定都更新了,DNSPod 后台查询也是一切正常的。打算申请一个免费域名做测试,不能没有弄明白根本原因就黑 DNSPod,呵呵。

  5. 呃,我也是用的他家解析,一直挺好的。解析不可能影响到代码的健康程度,能影响的只有域名能否正确的解析到 ip,先检查“激活地址”能否正常访问,如果不能正常访问,再查找 dns 的问题。也可能是还没有生效的原因,你找客服问下呗