農場主の日常

なんちゃってエンジニアの日常をつらづらと

Nucleus3.22でうまくpingができない場合

 NucleusでのPingエラー関連の情報を探していたら、更新pingその後 - ぷちパワ/w.ZeRoというサイトで、対処方法を見つけました。
 なんでも原因は、Nucleusからのping時のxmlに、<![CDATAが含まれることらしい。これは、Nucleusの3.22に含まれるxmlrpc.inc.phpの問題で、オリジナルのxmlrpc.incには含まれていないそうな。Nucleusで何か問題があったのかね。
 上記サイトでは、最新版のxmlrpc.incファイルを入手して修正する方法を紹介していますが、それはちょっと怖いので、Nucleus 3.22に含まれるxmlrpc.inc.phpファイルを修正することにします。

xmlrpc.inc.phpとNP_Sendpingの修正方法

/nucleus/libs/xmlrpc.inc.php
の1665行目付近
class xmlrpcval
{
var $me=array();
var $mytype=0;

function xmlrpcval($val=-1, $type='')
{
global $xmlrpcTypes;
$this->me=array();
$this->mytype=0;
if ($val!=-1 || !is_int($val) || $type!='')
{

class xmlrpcval
{
var $me=array();
var $mytype=0;
var $mode=0; //add by SakuraCandle

// function xmlrpcval($val=-1, $type='')
function xmlrpcval($val=-1, $type='',$mode=0) // change by SakuraCandle
{
global $xmlrpcTypes;
$this->me=array();
$this->mytype=0;
$this->mode = $mode; // add by SakuraCandle
if ($val!=-1 || !is_int($val) || $type!='')
{
に変更。

1834行目
case $xmlrpcString:
// G. Giunta 2005/2/13: do NOT use htmlentities, since
// it will produce named html entities, which are invalid xml
// $rs.="<${typ}>" . xmlrpc_encode_entitites($val). "";
// $rs.="<${typ}>" . htmlentities($val). "";

// N. Leenheer 2005/6/30: Use CDATA instead...
$rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
break;

case $xmlrpcString:
// G. Giunta 2005/2/13: do NOT use htmlentities, since
// it will produce named html entities, which are invalid xml
// $rs.="<${typ}>" . xmlrpc_encode_entitites($val). "";
// $rs.="<${typ}>" . htmlentities($val). "";

// N. Leenheer 2005/6/30: Use CDATA instead...
// $rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
// break;
if (!$this->mode){ //change by SakuraCandle
$rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
} else {
$rs.="<${typ}>".mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "";
}
break; // change end
へ。

NP_SendPing 0.7もこれにあわせて修正します。
83行目
$ping_info = new xmlrpcmsg(
'weblogUpdates.ping',
array(
new xmlrpcval($name, 'string'),
new xmlrpcval($updateurl, 'string')
)
);

$ping_info = new xmlrpcmsg(
'weblogUpdates.ping',
array(
// new xmlrpcval($name, 'string'),
// new xmlrpcval($updateurl, 'string')
new xmlrpcval($name, 'string',1),
new xmlrpcval($updateurl, 'string',1)
)
);

に変更。
 早速pingしてみると、
[juntwo] Ping Message:http://www.blogpeople.net/servlet/weblogUpdates - Results:Thanks for the ping.
[juntwo] Ping Message:http://ping.myblog.jp/ - Results:Thanks for the ping.

 おぉ、成功したよ。これで様子を見よう。

gooブログ検索へのping

 どうも、gooブログの場合、linkタグでのrssファイルへのアドレス指定は、サイトアドレスから指定しないとだめなようです。
 もし、
<link rel="alternate" type="application/rss+xml" title="RSS" href="xml-rss2.php" />
 となっていたら、
<link rel="alternate" type="application/rss+xml" title="RSS" href="<%sitevar(url)%>xml-rss2.php" />
 のように変更してください。
 これでうちは、gooブログ検索にタイトルが出てくるようになりました。


関連記事[ping

前後の記事 - [Nucleus]::タイトル一覧

コメント


コメントはありません。



コメントの追加


トラックバック

googleにPing送信。

OPEN SOURCE:
このブログでは福ろぐ様のNP_Sendpingを利用させて頂いているんですが、 googleにPing送信できることを知ったので、設定してみたところ… Ping Message:http://blogsearch.google.co.jp/ping/RPC2 - Results:The si...
2007/02/26 11:11

NP_Sendping で正常にPINGが送れない場合の対処方法

福ろぐ:
NP_SendpingはNucleusに付属しているxmlrpcライブラリを使用してPingを送信していますが、それをそのまま利用するとPingを受け付けてくれない場合が多くあります。 解決策としては二つ方法があります。それを...
2006/06/04 00:12

Nucleusで更新pingを送る

南天dub:
blogに新しい記事を投稿したときに、記事を収集している場所に「更新したから見てね」という合図を送るのが、更新ping 国内でもこんなサイトはたくさんあって、さまざまなblogが更新されたかチェックしてます...
2006/05/23 19:07
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。

↑ PAGE TOP