之前百度推出了一款WordPress結構化數據插件,經使用感覺還不錯,只是最近發(fā)現一個問題,在WordPress后臺發(fā)布新文章時,點擊發(fā)布后,要等很久頁面才能提交成功,而且經常造成主機資源超限,出現500錯誤.
經排查,露兜發(fā)現此問題是由WordPress結構化數據插件造成的,它的publish_post執(zhí)行函數耗時15秒,停用該插件后,文章發(fā)布就變得很快了,當然也有可能是這個插件跟我網站的某些代碼不兼容造成,如果你的WordPress后臺發(fā)布文章也要等很長時間,并且安裝了這個插件,不妨用下面的方法排查一下,確定這段代碼的執(zhí)行時間是否過長.
用文本編輯器打開該插件目錄下的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); //Vevb.com
- }
改成以下代碼,以便計算程序運行時間,代碼如下:
- static function publishPost($postid)
- {
- // 標記程序執(zhí)行開始時間
- 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);
- // 標記程序執(zhí)行結束時間
- list($usec, $sec) = explode(" ",microtime());
- $time_end = ((float)$usec + (float)$sec);
- // 計算程序執(zhí)行總用時
- $time = $time_end - $time_start;
- // 發(fā)送郵件,將ludou#ludou.org改成你的郵件地址
- wp_mail('ludou#ludou.org', '程序用時', '總時長(單位:秒):'.$time);
- }
將代碼中的 ludou#ludou.org 改成你的郵箱地址,然后上傳到你的網站服務器,并在WordPress后臺發(fā)布或更新一篇文章,這時你的郵箱中就會收到一封標題為 程序用時 的郵件,郵件內容中就會看到程序運行時長,我這里測試的運行時間是15秒,這樣的時間實在沒法忍受,不過看在它還有點用處的份上,還是忍忍吧.
最后,測試完畢,記得將代碼還原到修改之前.
原文轉自:ludou.org
新聞熱點
疑難解答
圖片精選