PETIT POWER w/ZeRo

 
  • Home
  • Archives
  • Download
  • About
  • Contact

2005年 10月 5(水曜日)

更新pingその後

とりあえず、動くようになったんだけど・・・イマイチ、原因が定かではなかったりするがなんとかそれっぽい部分を攻略してみました。

XMLRPC for PHPが新しいのが9月に出ていたのでまずはこれをベースにすることにした。

さらに、その前段階で調べていくと、どうもPingサーバ様達はXMLRPCのStringのデータが[[CDATA ほにゃ ]]とか になっているとエラーを返すっぽいぞ という現象にぶち当たったのだが・・・はたして本当にそうなのか?自信がない。
が、とりあえずそいつを取っ払うことにした。 さらになぜかほかのエラーも発生・・・Response周りのところでなぜか取得エラーが出る。
元のXMLRPCはNucleus(ココで使っているし)から持ってきたものなのなので、前述したように最新版にしてから考えるべしという基本的な荒業に入りました(笑)。

そういえば、本家のソースにはCDATAの設定でないんだよねぇ縲怐AあれはNucleus専用だったのか・・・さらに文字変換のルーチンが日本における1文字2バイトを超える場合には悪さするのでそれも取っ払った(いわゆる昔の手戻りみたいな修正)。
それを利用してなんとか、MODxからPingサーバへ無事Pingが飛んだ ということになりました。

が、実は飛べるんだけどプラグインのResponse部分でFaultCodeがエラーで返ってくる・・・という(謎)が未解決。
これはさっぱり原因がわからんでし・・・Responseの構造がXML_Parseでうまくとりきれないようにも見えるけど、実際ここのNucleusにも同じものをぶち込んでNP_SendPingもちょっくら改造してもエラーが操作履歴に出てこないのでそんなことはなさそう・・・
となると、MODxのプラグインが問題っぽいんだけど、その呼び出し部分はNP_SendPingと同じぐらいにシンプルなのでありえない・・・
となると・・XMLRPCのライブラリ側? ・・・・という堂々巡りに陥ったので、エラーをログに出さないようにしてとりあえずやめちゃいました。(蓋を開けなきゃ問題ないと)

ということで、以上の見解からするとNucleusの3.21以降だと更新Pingが正しくいってないつう可能性があるぞ ということになるんだけど・・・

結局、それが正しいのかよくわかってないので、もしNucleus使いの方でそんな風な感じがするという方が大勢いらっしゃれば、きっとそうなんだろうと思われる。

そうらしいという方の為に修正メモ

まず、XMLRPC for PHPをダウンロードしてくる。
一応、RDF周りの為にCDATAにも対応しておくべきかと思い、ソースを改造してどっちもできるようにしてみた。
その為の修正が以下にxmlrpcvalのクラス生成時のパラメタに$modeを追加
0ならば今まで通りにCDATAをつける、0でなければ付けないという仕組み


    class xmlrpcval
    {
        var $me=array();
        var $mytype=0;
        var $mode=0;
       
        function xmlrpcval($val=-1, $type='',$mode=0)
        {
            global $xmlrpcTypes;
            $this->me=array();
            $this->mytype=0;
            $this->mode = $mode;
 

モードによって切り替えている部分



function serializedata($typ, $val)
        {
            $rs='';
            global $xmlrpcTypes, $xmlrpcBase64, $xmlrpcString,$xmlrpc_defencoding,
            $xmlrpcBoolean;
            switch(@$xmlrpcTypes[$typ])
            {
                                     | 省略
                case 1:
                    switch ($typ)
                    {
                        case $xmlrpcBase64:
                            $rs.="<${typ}>" . base64_encode($val) . "</${typ}>";
                            break;
                        case $xmlrpcBoolean:
                            $rs.="<${typ}>" . ($val ? '1' : '0') . "</${typ}>";
                            break;
                        case $xmlrpcString:
                            // G. Giunta 2005/2/13: do NOT use htmlentities, since
                            // it will produce named html entities, which are invalid xml
                            if (!$this->mode)
                            {    $rs.="<${typ}><![CDATA[" . mb_convert_encoding($val,"UTF-8,"UTF-8,EUC-JP"). "]]></${typ}>";
                            } else
                            {    $rs.="
<${typ}>".mb_convert_encoding($val"UTF-8","UTF-8,EUC-JP"). "</${typ}>";
                            }
                            break;

本来であれば、mb_convert_encodingの引数はそれぞれの環境に従った形で修正されているんだけど、面倒なのでどっちでもOKなように直接文字コードを入れた。
(もし、EUC-JP環境でおかしいようなら後ろの”UTF-8,EUC-JP”をEUC-JPにしてみるべし)

もう1箇所、mb_convert_encodingを使用する箇所があるので、これもEUC-JPなヒトは直しておくこと。


        function serialize()
        {
                           | 省略
<value><string>' . mb_convert_encoding($this->errstr, "UTF-8","UTF-8,EUC-JP") . '</string></value>
 

さらに今回の修正の為にNP_SendPingも修正する必要がある。

xmlrpcmsgの引数に、先ほど追加した$modeの部分に1を指定する。


    function sendPing($pingurls) {
        $b = new BLOG($this->myBlogId);
                  | 省略
        $ping_info = new xmlrpcmsg(
                'weblogUpdates.ping',
                    array(
                    new xmlrpcval($b->getName(), 'string',1),
                    new xmlrpcval($b->getURL(), 'string',1)
                    )
 

以上で正しく更新Pingが飛ぶはずである・・・一応、ココの実験してmyblog.jpとかblogpeopleなんかで確認してみたつもり・・・。
あとは、MODxプラグインそのものなんだが・・・公開しようかどうしようか迷い中・・・MODxに更新Pingは入れてもいいのかしらと

投稿者 ZeRo in ざれごと at 00:14 | コメント (0) | トラックバック (0) このエントリーを含むはてなブックマーク

コメント
コメント表示形式 (一覧 | スレッド)

コメントがありません

コメント追加

BB コード 書式を許可します。
標準的な感情表現、 :-) や ;-) といったものは画像に変換します。
スマイル
         
電子メールアドレスは表示せず、電子メールの通知にのみ使用します。

ロボットからの自動的なコメントスパムを防ぐために、画像の下の入力ボックスに適切な文字列を入力してください。文字列が一致する場合のみ、コメントが送信されるでしょう。ブラウザーが Cookie をサポートし、受け入れることを確認してください。さもなければ、コメントを正確に確認することができません。
CAPTCHA

 
 

[PR]

カレンダー

戻る 11月 '08 転送
月 火 水 木 金 土 日
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリ

  • iPod (2)
  • MODx (29)
  • Nucleus (23)
  • OpenX (1)
  • PHP (22)
  • Ruby (1)
  • Serendipity (16)
  • WordPress (1)
  • ざれごと (93)
  • スクリプト&ソフト (6)
  • 健忘録 (4)
  • 本 (7)
すべてのカテゴリ

クイックサーチ

タグ

お風呂掃除 ちいたん アクセス解析 アフィリエイト カビ スニペット テンプレート バイオ バージョンアップ フレームワーク ミニブログ メールサーバ モップ リニューアル 加速成功 奇怪 小技 広告 本 玄箱 藤原伊織 道幸 武久 電話機 風呂掃除 ajax Cache checkpad CI CORE Server Courier-MTA dave.tv eForm extJS feedburner Firefly framework frog google GPARTED-LiveCD Insights Search iPhone iPod touch iTunesサーバ kohana Linkstation mce mixi ML300 MODx moony np_metaex np_newsfeedex NP_RelatedEX NP_Simplepie nucleus OpenX PHP phpmixi phpTrafficA piex qmail rhaco s9y Safe Mode SendPing Serendipity shorewall Simplepie SQLite toaster TrackBack Twitter Ubuntu USB-HDD vista wii Wii Fit Windows Live Writer wordpress xajax xfy Blog Editor XREA ZendFramework Zend_Cache

コメント

コメント: ZeRo
iPod Touch サーマルコントロールケース
2008/10/11 15:16
あら、えー と つけた ときは確か 保護シート は外しまし た。 確か 、少しの厚 みでもちゃ んと収まら なかった気 がします。 す [...]


コメント: Kaz
iPod Touch サーマルコントロールケース
2008/10/09 21:51
購入しまし た。今まで 使用してい た保護フィ ルムを貼っ たままでケ ースを装着 してしまい 、表示面に ニュートン リングが・ ・・ [...]


コメント: ZeRo
pieX Ver0.7リリース
2008/10/05 21:51
トラックバ ック先の情 報もチェッ クしてね・ ・・修正版 は後日アッ プします、 説明書もち ょっと改版 ですね(^ ^; shin tata [...]


コメント: shintata.com
pieX Ver0.7リリース
2008/10/05 21:25
全体のRSS を修正した ので、せっ かくだから 「最近の記 事」という のを表示さ せたい。 まとめたRS Sを取り込 んで表示さ せれば [...]


コメント: ZeRo
LinuxWorld Expo2008 にいってきたです
2008/06/02 22:30
さすがに、 全部動かし ているわけ じゃないで すよ。 実 際に触った ことがある ものもあり ますが、大 抵はデモサ イトとかを 見た [...]


リンク集

  • オープンソース
    • CMS/BLOG
      • MODxCMS
        • Let's enjoy MODx
        • MODxCMS
        • Phize on the Web
        • あ~ゆ~どりま~
        • ケイムズカンパニー
      • Nucleus CMS JAPAN
      • Serendipity
    • FRAMEWORK
      • CodeIgniter
        • CodeIgniter 本家
        • CodeIgniterユーザガイド日本語版
        • Rapyd Framework
      • Kohana
        • Kohana本家
      • ZendFramework
    • ライブラリ
      • SimplePie
    • Zen Cart日本公式サイト
  • サービス
    • Value-Domain
  • スクリプト
    • 206
    • ネットサーフレスキュー「Web裏技」
  • メールサーバ
    • Courier-mta日本
    • 日本Courierユーザ会
  • Nucleusなブログ
  • SHOP@PETITPOWER
  • ZeRo∞Log

インフォメーション

WORLDRANKING BELLSEARCH

 RSSリーダーで購読する

Twitter


Copyright 2005 - 2008 PETITPOWER  | Powered by Serendipity