首页 > CMS > Wordpress > 正文

wordpress 优化 – 解决定时发布失败

2024-09-07 00:52:07
字体:
来源:转载
供稿:网友

WordPress 不知道在哪个版本里面加入了定时发布功能,这个本来其实是很不错的功能,可惜有着各种各样的问题,比如我这台VPS安装完成之后,就一直无法成功发布文章.

第一种可能性:

从程序的角度出发,定时发布应该是在服务端计算时间,推测不能成功发布的原因,有两种可能性,第一个是时间计算是正确的,但是VPS 反应比较慢,等定时程序开始操作时,原定时间又过期了,导致进入无限循环,无法发布成功,我们先按照这个思路进行修改,在 /wp-includes/cron.php 中找到一段代码,看起来是超时时间控制的代码,代码如下:

  1. $cron_request = apply_filters( ‘cron_request’, array
  2.  
  3. ‘url’ => add_query_arg( ‘doing_wp_cron’, $doing_wp_cron, site_url( ‘wp-cron.php’ ) ), 
  4.  
  5. ‘key’ => $doing_wp_cron
  6.  
  7. ‘args’ => array
  8.  
  9. ‘timeout’ => 0.01, 
  10.  
  11. ‘blocking’ => false, 
  12.  
  13. ‘sslverify’ => apply_filters( ‘https_local_ssl_verify’, false ) 
  14. //Vevb.com 
  15.  
  16. ) ); 

先将timeout 的0.01修改为30.00,这样有30秒的空档时间,应该是肯定可以满足条件了,修改完成之后,再次发布一篇文章进行测试,发现依然没有发布成功.

第二种可能性:

那么考虑第二种错误的可能性,就是服务器上取得的时间不正确,这也是有可能性的,VPS上可能存在时间的有三个地方,分别是操作系统的时间、数据库的时区设置、php的时区设置.

CentOS时区设置

查看 CentOS 系统时间的命令为:date -R,发现为 UTC  时间,中国应该为东8区,执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,再次 date -R,显示应该是:[root@li672-190 uploads]# date -R Wed,24 Dec 2014 23:30:39 +0800

Mysql时区设置:

Mysql 查看时区方法为:

  1. mysql -u root -p 
  2.  
  3. mysql> show variables like ‘%time_zone%'; 
  4.  
  5. +——————+——–+ 
  6.  
  7. | Variable_name | Value | 
  8.  
  9. +——————+——–+ 
  10.  
  11. | system_time_zone | CST | 
  12.  
  13. | time_zone | SYSTEM | 
  14. //Vevb.com 
  15. +——————+——–+ 

这样表示读取的是系统时区,进行修改吧,修改的位置为 /etc/my.cnf。在 my.cnf 的[mysqld]项目中增加一条:

default-time-zone = ‘+8:00′

重启mysql之后,再次进入mysql里面查看时区,应该显示:

  1. mysql> show variables like ‘%time_zone%'; 
  2.  
  3. +——————+——–+ 
  4.  
  5. | Variable_name | Value | 
  6.  
  7. +——————+——–+ 
  8.  
  9. | system_time_zone | CST | 
  10.  
  11. | time_zone | +08:00 | 
  12.  
  13. +——————+——–+ 
  14.  
  15. rows in set (0.00 sec) 

PHP时区设置:

PHP中也有时区设置,设置位置为 /etc/php.ini,设置ini文件中的[Date] 项,设置时区为 date.timezone = Asia/Shanghai,然后重启 php-fpm,通过修改这三个位置的时区设置之后,应该不会再有和wordpress相关的时区设置失误了,重新进入wordpress的后台,再次新建文章进行发布,依然提示失败.

第三种可能性:

前面两种方式都失败了,怀疑是否程序有bug,查找网上其他人的经验,发现了一个插件 WP Missed Schedule,安装成功并启用之后,问题解决,这个问题证明了,wordpress还是各种插件好用啊.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表