TrackBack もろもろの改善†
- 元タイトル: TrackBack が同じURLに何回も飛んでしまう
- ページ: BugTrack
- 投稿者: henoheno
- 優先順位: 重要
- 状態: 却下
- カテゴリー: 本体バグ
- 投稿日: 2004-12-10 (金) 22:19:35
- バージョン:
URLを含む行を編集するとTrackBackが飛んでしまう (完了)†
- バージョン: PukiWiki 1.4-1.4.4
- http://lunatear.net/archives/000213.html
- "これってもしかして編集するたんびに送ってたりとかしませんか?<このまえ2件連続で来ていたんで"
- "おまけにTracebackもらったところには必ず見に行ってるんですが、そこ見に行ったらパスワード要求されましたよ・・・"
- "パスワード居るようなページでTracebackするな(;´д`)ノ"
- "お願いなんでここ見てたら設定みなおしてください<PukiWiki使ってる人"
ポイント†
- 新規に追加された行に含まれているURLに対して自動的にPing URLを取得し、Pingを打つ
- 既存の行に含まれているURLにはPingを打たない
- ただし、URLを含んでいる既存の行の「周囲」を再編集した時には再度 Ping を打ってしまう <= ココ
- このため、ページの編集に応じて複数回 Ping を打ってしまうことがある
- ある意味SPAMになっている予感 (^^; -- henoheno
- 早速2発飛んできましたよ(苦笑) って書いたら3発目飛んでくるのかな(´・ω・`) -- 上のリンク先の中の人
- お (^^; お呼びたてしてしまったようで申し訳ありません。本当に2発飛んでいますね。 -- henoheno
- この点を直したものを最終的に PukiWiki/Trackback 0.2 とす(ることで、従来版と区別できるようにす)るのが良さそうですね -- henoheno
- 開発談義/6 の最後の方に似たような話が載っていますね。(3発目が飛んでいないあたりからも)「追加された」と判断するロジックはあっても、判断基準が望ましくないのかもしれません。このページについて言えばBugTrackで作成されたあたりが絡んでいるような気がします -- にぶんのに
- Trackbackの細かいところを追わないといけなそうですが、「追加された行」に現れるURLを無条件に対象にしているのではないかと推測しています。一発はURLだけを記入したとき、もう一発はURLを含んでいる行をインデントしたときに飛んだのではないかと。 -- henoheno
- 仮にそういうことであるならば、今度は「削除された行」に存在しているURLについてはTrackback済みとみなし、pingを抑制するようにすることでケアできそうです。 -- henoheno
- そういうことでないならば、Trackback ping を打った先をキャッシュに保存して、そこを毎回チェックさせることができるのではないかと思います。 -- henoheno
- お、開発談義/6にそれっぽいことが書いてありますね > 追加された行。以前はもっとキョーレツだったのか・・・ (^^; -- henoheno
開発談義/6の話題を以下に移動しました -- henoheno
開発談義/6 より移動†
- ARTIFACTというサイトで、PukiWikiのTrackBack機能はその記事以外の更新でも送られることがあります。PukiWikiのTrackBack機能を使っている人はご注意を。とありますが、そんなことは意識していたはずなので、心当たりは当然ないんですけど、そういう動きになるケースってあるんですかね? -- upk
- それを書いたARTIFACTの運営者です。PukiWikiは使ってないので正確なところがわからないんですが、PukiWikiのBBSにURLがあった時、何度もTrackBackが送られてきました。リンク先の自分の記事を実験台にしてもかまいませんので検証お願いします。 -- 加野瀬
- 今の仕掛けでは、ページの更新時に、ページに含まれるすべてのURLに向かってTrackBack Pingを送信するようになっています。これを、更新されたページ内の、「追加」された行に含まれるURLだけに限定するようにすれば、多少は改善されるのではないかと思います。cvs:file.php(v1.4:r1.30)とcvs:trackback.php(v1.4:
r1.12r1.13)で対策してみました。 -- ぱんだ
- おぉ、それは、パフォーマンス上、ありがたい実装ですね。-- upk
- その記事以外の更新でも... は、更新行以外でもであれば、この修正で対応されますね。記事って書かれちゃうと、./wiki/ 下の1ファイルと理解し、となるとおかしい。なんですよねぇ。迅速な対応ですねぇ。さすが。> ぱんださん-- upk
- Wiki用語がよくわかっていなかったので「記事」と書いてました。自分の言いたかったのは、ぱんださんの書かれているようなことでした。 -- 加野瀬
- Wiki用語じゃないと思います。私だけかなぁ... -- upk
- "PukiWiki/TrackBack 0.2"
- 0.1に含まれていた以下の問題を修正しました (テスト求む) -- henoheno
- 1. URLを含んでいる既存の行を、URLを損なわない形で編集(例: 周囲に半角スペースを挿入)した場合に、再度そのURLに ping を打ってしまう
- トラックバックを受ける先のサイトにとってこの動作は冗長であり、問題となっていました。
- 2. 同じURLが複数行書き込まれたとき (例えばSPAM)、複数回HTTP接続を行ってしまう
- ※末尾が微妙に異なるURLを複数行書き込まれた時は従来通り(順番に)複数回HTTP接続を行う
- ※PHPの実行時間制限などにひっかかりやすくなることもふまえると、従来版を悪用しようとしても多少のネットワーク的な無駄が発生する程度であると思われる
- 3. $trackbackが無効の時もtb_send() をコールしていた
- 従来は tb_send() の先頭で<も>判定を行う形でこの関数を必ずコールする様になっていましたが、そもそもTrackbackが無効の時には lib/trackback.php 自体インクルードする必要がない様にできるはずなので、PukiWiki内部の処理として明確にこれを呼ばない様にしました。
- 上記の修正は手元のコードから中核となる部分を抜き出して先行コミットしただけなので、この後でtrackback周りのクリンナップが入ります。 -- henoheno
- にぶんのにさん、フォローありがとうございました :) -- henoheno
- BugTrack/764 Warning: Use of undefined constant PREG_GREP_INVERT
TrackBackの処理中にconvert_html()を呼んでいることにより処理が重い & 重い副作用がある†
TrackBack受信のみ / 送信のみの構成ができない†
いつ、どのタイミングで送信するのかコントロールできない (要約を書く前にPingを打たれても仕方が無いぞえ)†
- 技術的な課題が落ち着いてからでいいので、トラックバックの受信設定と送信設定を分離することを検討してもらえないでしょうか。現状だと、ページが完成したときにトラックバック送信するには、URLだけ最後に記述するといった、妙な工夫をする必要があります。また、コメントプラグインで書き込まれた内容にURLが含まれていたときも、URLの先にRDFが埋め込まれていたらやはりトラックバックが飛んでしまいます。 (^^; -- jitte
- どこかのサイトで、更新画面にチェックボックスをつけて、セットされていたときだけトラックバック送信するようになっているのを見かけたので、私も同様に修正をしています。チェックボックスの値をtb_send()の先頭で確認するだけの簡単なものです。画面例 →
-- jitte
- そういえば手動送信はプラグインがあるんでしたっけ? -- henoheno
- おー、チェックボックスで送信をコントロールというのは良いアイデアだと思います。>画面例
official:欲しいプラグイン/151の需要もほぼ満たせますし。ぜひ公式採用を検討していただきたいです。 -- sagen
- これ、わたしからも一票入れたいです。現在の pukiwiki の実装は危険に思えてきました…。 -- kawai
- 1.4.7_notbでTrackback機能は削除されたので、Status:却下 としておきます -- umorigu