多重TB問題を考察

WP v2.3にして少し経った頃、トラックバックすると多重送信になるようになった。2重のこともあれば4重のこともある。全然、そのあたりに規則性はないようだった。このように必ず失敗するだろうと思われる状態でトラックバックする勇気はない。しかし、本気で追求はしなかった。なぜなら、トラックバックしなければ問題ないから・・・。(なんて後ろ向き) たぶん、プラグインがらみじゃないかという気だけはした。しかし、2.3にアップグレードする際に触ったプラグインは数多く特定するにはかなり検証が必要だった。でもなんとなく勘でGoogle XML Sitemapsが怪しいと思った。(はっきりせいや)

Google XML Sitemapsにはずっとひろまさハックを適用してきたのだが、3.0くらいからハック箇所のコードが変わってきた。(汗) ひろまささんはこの頃絶好調に?忙しそうで頼みづらい。(苦笑) 見よう見まねで改変していたのだが、正直なもので気がつくと動いてなかった。しょうがないのでデフォルトで動かす。気がつくとまた動いてなかった。(ダメダメだ)

たぶんだが、記事数が多すぎタイムアウトするのだろう。その際に多重TBになるとか想像してみた。ならば、sitemapを投稿時に生成させないようにすればいい。管理画面内に「拡張オプション」があり、その中にはタイムアウトの時間を延長させたり、sitemap生成をバックグラウンドで行なうようできるので設定を変更する。今のところ、これでいいようである。

デバッグで発見 <その1>

Notice: Only variables should be assigned by reference in /***/wp-includes/post.php on line 1008

こんな表示が複数出ていた。なんだ :?:

「Only variables should be assigned by reference」→「変数だけが参照に割り当てられるべきである」

Notice : 実行時の注意勧告
エラーを発しうる状況に遭遇したことを示す。ただし通常のスクリプト実行の場合にもこの警告を発することがありうる。

Notice はプログラムの記述方法にあいまいな点があることが原因です。多くの場合は、PHP 処理系が適切な判断をして、よきに計らってくれます

よきに計らうって。どうなんでしょう、これは? :mrgreen:

PHP 4.3 まで古いバージョンでは、このメーセージは出力されませんでした。
PHP 4.4 以降のバージョンで、出力されるようになりました。
PHP 4 で開発されたプログラムを PHP 5 で実行すると、頻繁に出力されるようです。

また、PHP 5 でも環境設定によって、出力されない場合があります。
そのため、「参照返し」を理解している開発者でも、メッセージは出ることに、気が付かないケースもあります。

む、むずかしい・・・。むずかしすぎる! :sad:

デバッグで発見 <その2>

デバッグ画面が日本語化されない。で、直してみたが、別にあまり見ないからいいのか。 :lol:

スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメント

  1. ひろまさ より:

    こんにちは!

    プログラムを読んだところ、Google XML Sitemaps も”バックグラウンド”設定で wp-cron 化されるようですね。 8)
    これで、多重トラックバックは直りましたか?

    “Only variables should be assigned by reference” はもともとコアに潜む Notice で matt も気が付いてないのかもしれません。該当行が若干妙な書き方になっていました、おそらく良きに計らわれて動作自体はうまくできていると思われます。

    ちなみに平気なのでいつでもご連絡ください(笑)

  2. Masayan より:

    これで、多重トラックバックは直りましたか?

    う∼ん、いいと思うんですけど、今度はsitemapの生成に問題が・・・。(汗)

    PHPって賢いんですねぇ。 :lol: すべて良きに計らって欲しいもんです。 :x

    ちなみに平気なのでいつでもご連絡ください

    一応自分で検証してニッチもサッチもいかなくなってから連絡します。(殴

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

:x :wink: :twisted: :shock: :sad: :oops: :o :mrgreen: :lol: :idea: :evil: :cry: :cheesy: :arrow-u: :arrow-l: :arrow-d: :D :?: :) :!: 8)