PageRank取得プログラム改修

2007/05/09 | PHPライブラリ

仕様の変更?で取得できなくなってしまっていたPageRank取得プログラムを改修した。今まではレスポンスをxmlで受け取ってそこからPageRankと思しき部分を切り出していたのだが、現在はリクエスト時に直接PageRankをとるようにしている。取り急ぎ、うまく動いている模様。
現在プログラム等々とりまとめ中。近日公開予定。

PageRank取得ページはこちら

Pleskサーバで発生したPHPの問題

とある案件で、mojaviで構築したシステムをPleskを使った共用サーバへ移行できるかどうか調査をおこなった。開発環境はmojavi + QuickForm + Smarty。

まず第一の問題。PEARのインストールができない。これはおそらくsafe_modeの設定がされているためで、外部のファイルを読み取ることができない、というようなエラーだった。PEARを利用するときは基本的に、http://go-pear.orgからその環境専用のPEARをインストールしているのだが、これができないことが判明した。仕方がないので別サーバで取得したPEARのファイル群を全て手動でコピー。

第二の問題。Smartyで一時ファイルが作成できない。これは単に「一時ファイルが作成できない」ということではない。自分の環境ではmojaviを使う際、Smartyの一時ファイルをモジュールごとにディレクトリを作成してそこに保存している(テンプレートの名前の重複を防ぐため)。その際モジュール用のディレクトリは、プログラムでそのあるなしを確認し、ない場合に自動で作成しているようにしている。どうやらこれが問題らしい。自動作成されたディレクトリ内にファイルは作成されているが、作成されたファイルは全て0バイトのファイルになっていた。しかも、いつもの%%ushd〜〜みたいなファイル名ではなかった。
この問題は各モジュール用のディレクトリを自動生成するのではなく、あらかじめ作成しておくことで回避できることがわかった。

今回の開発は元々「開発ありき」で始まったので(サーバが未定だった)やむをえないのだが、本番サーバ環境というのは大切だとあらためて実感した。いい勉強になった。

PageRankが取得できなくなった要因の考察

2007/05/06 | PHPライブラリ

今まで動いていたPageRank(ページランク)取得プログラムが突然動かなくなった。
いろいろ調べてみて、なんとなく原因がわかった。

PageRankを取得するために、Googleのサーバにクエリを投げるわけだが、レスポンスはXMLで返される。その中のPageRankに相当すると思われていた部分が今は全て「0」で返されている模様。つまりプログラムは正しく動いているのだが、レスポンスが0になってしまっているわけだ。

考察としていえるのは以下の2点。
○元々PageRankじゃないものを取得していた(PageRankに非常に近いパラメータであった)
○Googleからの出力の仕様が変わった(おかしくなっている?)。

PageRankだけを取得するクエリがあるのだが、こちらだと問題なく取得できるようだ(よって今まで動作していたプログラムには問題がなく、Google側の問題と思われる)。

原因がわかったので、全部とりまとめて、PageRankのプログラムを公開します(公開といってもどこかの誰かさんが作成したプログラムの改良ですので、あまりオリジナリティはありませんが)。乞うご期待。

PageRank取得アルゴリズムの変更?

2007/05/05 | PHPライブラリ

モロモロ好評をいただいているGoogleのPageRankを取得するための仕組みだが、実はつい最近取得できなくなった。自分の手元にはこれまで2種類のプログラムがあって、そのどちらでも取得できていたのだが、これがどちらでも取得できなくなってしまった(この二つのプログラムの内容の違いは、実は自分でも把握してなかったりもする)。いずれにしても「突然」PageRankが取得できなくなったのだ。ただし完全にエラーが返されているわけではなくて、PageRankが0で値が戻ってきているようだ(詳しく調べていないけどそんな感じ)。
理由はわからないけど、プログラム内部のチェックサム値がかわったのか何なのか・・・。
そこでまたまったく別のプログラムを使ってPageRankを取得してみた。するとこちらは大丈夫。うまく取得できた。

プログラムの書き方がそれぞれ違うので、一度詳しく調べてみないといけない。ただしこれ自体、本来APIとして提供されている機能でもないから、今回解決できたとしても、また動かなくなる可能性も大きい。

とりあえず近日中に現在公開しているプログラムは入れ替えるけど・・・。やっぱり公開できないかもしれない。
期待してくれてた人、ごめん。

演算にはmathがよさそう

2007/05/04 | Smarty

テンプレート内で、四則演算して変数に結果を割り当てるのは、カスタム関数{math}がよさそう。

{math equation=”val1 * val2″ val1=5 val2=3 assign=test}

こんな感じで変数$testに演算結果を割り当てられる。括弧とかも使えるらしい。
でもこれ、テンプレート内でevalして処理してるから、負荷がかかるらしい。あとループの中で演算したりするのはなおさらちょっと・・・(マニュアルにもそう書いてある)。

まぁ、それもこれも、相当アクセスがあるサイトの場合で、月間数万ページビュー程度なら、全然たいしたことないような気もする(とはいえ少し気が引ける)。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net