好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

百度WordPress结构化数据插件会延长文章发布时间

百度WordPress结构化数据插件会延长文章发布时间

之前百度推出了一款WordPress结构化数据插件,经使用感觉还不错,只是最近发现一个问题,在WordPress后台发布新文章时,点击发布后,要等很久页面才能提交成功,而且经常造成主机资源超限,出现500错误.

经排查,露兜发现此问题是由WordPress结构化数据插件造成的,它的publish_post执行函数耗时15秒,停用该插件后,文章发布就变得很快了,当然也有可能是这个插件跟我网站的某些代码不兼容造成,如果你的WordPress后台发布文章也要等很长时间,并且安装了这个插件,不妨用下面的方法排查一下,确定这段代码的执行时间是否过长.

用文本编辑器打开该插件目录下的main.php,即baidusubmit/main.php,查找:publishPost,可找到以下代码:

static   function  publishPost( $postid )  {       require_once  dirname( __FILE__ ) . DIRECTORY_SEPARATOR .  './inc/sitemap.php' ;       $schema  = BaidusubmitSitemap::genSchemaByPostId( $postid ,  $xpost );       if  ( 'publish'  !=  $xpost ->post_status ||  ''  !=  $xpost ->post_password) {          self::deletePost( $postid );z           return ;      }       $xml  =  $schema ->toXml();       $content  = BaidusubmitSitemap::genPostXml( $xml );       //file_put_contents('/home/work/baidusubmit.log',  date('[Y-m-d H:i:s]')."n".$content, FILE_APPEND);        $r  = BaidusubmitSitemap::sendXml( $content , 1);       //file_put_contents('/home/work/baidusubmit.log', date('[Y-m-d H:i:s]')."n".$r, FILE_APPEND);  //phpfensi.com   } 

改成以下代码,以便计算程序运行时间,代码如下:

static   function  publishPost( $postid )  {       // 标记程序执行开始时间       list( $usec ,  $sec ) =  explode ( " " ,microtime());       $time_start  =  ((float) $usec  + (float) $sec );         require_once  dirname( __FILE__ ) . DIRECTORY_SEPARATOR .  './inc/sitemap.php' ;       $schema  = BaidusubmitSitemap::genSchemaByPostId( $postid ,  $xpost );       if  ( 'publish'  !=  $xpost ->post_status ||  ''  !=  $xpost ->post_password) {          self::deletePost( $postid );z           return ;      }       $xml  =  $schema ->toXml();       $content  = BaidusubmitSitemap::genPostXml( $xml );       //file_put_contents('/home/work/baidusubmit.log',  date('[Y-m-d H:i:s]')."n".$content, FILE_APPEND);        $r  = BaidusubmitSitemap::sendXml( $content , 1);       //file_put_contents('/home/work/baidusubmit.log', date('[Y-m-d H:i:s]')."n".$r, FILE_APPEND);          // 标记程序执行结束时间       list( $usec ,  $sec ) =  explode ( " " ,microtime());       $time_end  =  ((float) $usec  + (float) $sec );         // 计算程序执行总用时        $time  =  $time_end  -  $time_start ;         // 发送邮件,将ludou#ludou.org改成你的邮件地址       wp_mail( 'ludou#ludou.org' ,  '程序用时' ,  '总时长(单位:秒):' . $time );  } 

将代码中的 ludou#ludou.org 改成你的邮箱地址,然后上传到你的网站服务器,并在WordPress后台发布或更新一篇文章,这时你的邮箱中就会收到一封标题为 程序用时 的邮件,邮件内容中就会看到程序运行时长,我这里测试的运行时间是15秒,这样的时间实在没法忍受,不过看在它还有点用处的份上,还是忍忍吧.

最后,测试完毕,记得将代码还原到修改之前.

原文转自:ludou.org

查看更多关于百度WordPress结构化数据插件会延长文章发布时间的详细内容...

  阅读:255次