Home > 資料室 > WordPress:トラックバックが出来ない!

WordPress:トラックバックが出来ない!

注:以下は、WordPress Ver2.6.2での情報です。

トラックバックとは何ぞや?という方には下記。

昨年12月某日、このブログからリンクさせていただいた記事に、トラックバックをしてみた。しかし、トラックバック先の記事には、コメントリンクが表示されなかった。トラックバックが承認されなければ表示されないので当然と言えば当然だが、念のため、いろいろテストしてみた。その結果、

このブログの記事(以下自サイト)同士のテスト

  • トラックバックを行なっても、トラックバック先にコメントリンクできない。
  • ピンバック1も行なえない。

他サイトを仮稼動しトラックバックのテスト

  • 他サイト→自サイトへのトラックバックは行なえ、自サイトの記事にコメントリンクが出来た。
  • 自サイト→他サイトへのトラックバックが行なえない。

一連のテストから、自サイトになんらかの問題がありそうだと気づく。ここでgoogle神社にお参りすると、WordPressでは、バージョン違いではあるが、トラックバックに関する下記のような事例があった。

要は、

To fix it, Ⅰ bumped up my PHP memory_limit from 8M to 16M.

php.iniを書き換え、処理に利用できるメモリを増やせば解決すると思ったが、いくら値を大きくしても結果は変わらず。

仕方がないので、片っ端から動作ログを出力することにした。

動作ログ出力ファンクション:

$app_logging = 1;

function log_app($label,$msg) {
    global $app_logging;
    if ($app_logging) {
        $fp = fopen( ABSPATH .  '/wp-app.log', 'a+');
        $date = gmdate( 'Y-m-d H:i:s' );
        fwrite($fp, "\n\n$date - $label\n$msg\n");
        fclose($fp);
    }
}

動作ログ出力(例):

log_app('wp_insert_post',"wp_insert_post start.");

上記のような文を、投稿ボタン押下→トラックバック送信に関係しそうなところに片っ端から挿入する。

このソースをwindows上のxampp2上で動作ログコードのデバッグのため稼動させると、なんと自サイト→自サイトのトラックバックが行なえる!
訳がわからないまま、動作ログを、windowsのxampp環境上と、本運用サーバ上で採取した。
解析した結果、トラックバック・ピング3が送信されるまでの処理の流れは下図のように、

投稿時トラックバック送信処理フロー

投稿時トラックバック送信処理フロー



  • 投稿ボタンの押下→投稿完了
  • (おそらく)画面表示をきっかけに、登録されている処理を順次処理していく

の2つの流れがあることが分かった。
この中で、「cron.php」内の「function spawn_cron()」中の

$argyle = @fsockopen('ssl://' . $parts['host'], $port, $errno, $errstr, 0.01);

if ($parts['scheme'] == 'https') {
    // support for SSL was added in 4.3.0
    if (version_compare(phpversion(), '4.3.0', '>=') && function_exists('openssl_open')) {
        $port = isset($parts['port']) ? $parts['port'] : 443;
        $argyle = @fsockopen('ssl://' . $parts['host'], $port, $errno, $errstr, 0.01);
    } else {
        return false;
    }
} else {
    $port = isset($parts['port']) ? $parts['port'] : 80;
    $argyle = @ fsockopen( $parts['host'], $port, $errno, $errstr, 0.01 );
}

@fsockopen()のタイムアップまでの秒数が0.01秒と、極端に短いことが分かった。

本運用環境では、@fsockopen()の処理結果は毎回エラーだった。マシンが非力の為@fsockopen()に毎回失敗し、後続の順次処理を呼び出すことが出来なかったのだ。
なので、上記2箇所の@fsockopen()の第5パラメータ、タイムアップまでの秒数を「0.01」→「3」秒に変更したところ、
本運用環境でもエラーが出なくなり、
上記で挙げた問題点が全て解決した。やれやれ。

  1. WordPressが持っている機能。投稿記事中からリンクしたすべてのブログへのリモートコメントを試みる。詳しくは左記URL中の「# 5.5.2 ピンバック」参照 http://wpdocs.sourceforge.jp/Introduction_to_Blogging []
  2. APACHE,MySQL,PHPの動作環境 []
  3. トラックバックを通知するためのHTTPリクエスト []
- 関連する投稿 -

Comments:2

船員S c-jp 09-01-15 (木) 9:34

本記事のcron.phpに関連した大変よい記事がありました。
・XREA & CORESERVER の cron と WordPress の wp-cron
 http://another.maple4ever.net/archives/130/#comments

「wp-cron」とは、cron.phpがHTTP通信で起動するPHPスクリプトです。
上記記事から引用させていただきます。
>・・・お気づきかと思いますが、きっかけはユーザからのアクセス、ブラウザによる
>閲覧ですので、もし仮にそのサイトがその後1アクセスもなければ、いっくら
>スケジュールしておいてもなにも実行されません。
この点が自信なかったんですが、やっぱりそうだったんですね!!!

かずい c-jp 09-01-26 (月) 11:08

わざわざ私のブログにコメントありがとうございました。
おそらく自分で探っていたら数時間かかっていたので、大変参考になりありがとうございます。
ご教授いただいたサイト、早速拝見しました。
おそらく複合要因だと思うので、また調べてみます。
今後ともよろしくお願いします。

Comment Form
Remember personal info

コメントリンクを nofollow free に設定することも出来ます。

Trackbacks:3

Trackback URL for this entry
http://magellan.voyage.doesntexist.com/20090114/444/trackback
Listed below are links to weblogs that reference
WordPress:トラックバックが出来ない! from マゼランな航海
pingback from WordPress でping/トラックバックを送信できない @ 半月記 c-jp 09-06-16 (火) 21:17

[...] wp-include/cron.php の wp_remote_post() の設定時間を長くする [...]

trackback from Hinemosu c-jp 10-01-08 (金) 10:11

WordPress:「トラックバック送信先」に送れない問題が解決した

最近、WordPressの記事作成時、「トラックバック送信先」にURLを書いても送信されず、そのまま残る問題が発生していました。 「相手側の問題なのかなー?」と気になりながらも放置して…

pingback from WordPressでトラックバックが送信できない | WordPress 虎の巻 – WordPressの使い方 インストール SEO プラグイン テーマ カスタマイズ etc c-unknown 10-01-30 (土) 22:23

[...] があります。 海外の無料サーバーなんかだとレスポンスが悪いことが多いので仕方ないのかなと思ってましたが、その解決策をネットで偶然発見! WordPress:トラックバックが出来ない! [...]

Home > 資料室 > WordPress:トラックバックが出来ない!

あわせて読みたい
あわせて読みたいブログパーツ
Pingoo!
Yahoo! ログール
blogpeople
ブログ村
ブログランキング・にほんブログ村へ
SEO Stats
ページランク
表示時クエリ数と時間
63 クエリ 1.322 秒

Return to page top

Easy AdSense by Unreal