cakePHP1.2ベータ版をインストール

2008/03/19 | cakePHP

新しいサイトを作ることにした。
毎度考えるのが、WordPressを使うか、その他のCMSを使うか、フレームワークを使うか、フレームワークなら何を使うか・・・。悩みはつきない。
WordPressは速度の問題で悩んでいるところなのでパス。その他のCMSだととりあえずメジャーどころのXoopsだが、結局使いにくい。今回は特に単機能に特化したサービスを立ち上げる予定なので、Xoopsなんかは不向き。で、どのフレームワークを選ぶか、というところで悩む。

Zend FrameWorkを使ってみようか悩むところだが、今回はcakePHPを使うことにした。どうもZend FrameWorkを使うような場面に遭遇しない。もっとライトウェイトなフレームワークがほしいところだ。今回はバージョン1.2がベータ段階になっているのでこちらを採用。そしてインストール(といってもFTPするだけ)。

ファイルをダウンロードして解凍後、FTPにてサーバにアップ。最低限の設置はこれにて完了。ファイルはドメインのドキュメントルートに丸ごとアップロードした。で、早速ブラウザでアクセスした。
cakePHPが親切だと思うのは、この何もしていない状態でアクセスすると、やるべきことをメッセージで教えてくれるところだ。言ってみれば手動のインストーラでもあるわけだが・・・。まずやることが書いてある(エラーは黄色で書かれている)。

Please change the value of ‘Security.salt’ in app/config/core.php to a salt value specific to your application

とのことだ。これは何か適当に文字列を入れておけばよさそうだ。
そして次のメッセージ。

Your database configuration file is NOT present.
Rename config/database.php.default to config/database.php

データベースの設定をしてくれとのこと。用意しておいたデータベースの設定を書き込んだ。修正したファイルをアップロードしてサイドアクセスすると、エラーの黄色がなくなった。つまりこれでインストール完了だ。

さて基本構造はおそらく全バージョンと同じだと思うので、違いを見つけてこのブログにメモしていくことにする。

PHP5になって遅くなったという意見があるが

2008/03/18 | SNS/CMS/ブログ

ネットで調べてみると「PHP5になって遅くなった」という意見がちらほら見受けられる。本来ならバージョンが上がったのだから高速化が図られてほしいのだが真相はどうなんだろう。
バージョンが違うだけとはいえ、PHP4とPHP5はもはや別物に近いといっても過言ではない(らしい)。実際いろいろ試して、その結果としてPHP5のほうが遅いと言われている人もいるようだ。もちろん元のPHPのソースが違うのだから、それぞれ得手不得手なところがあって、あるところではPHP4のほうが早い、なんてこともありうるだろう。そういう場合はよりPHP5に向いた記述をするよう心がけていくべきなんだろう。

と悠長なことをいってられない問題。最近よく利用しているWordPress。これは明らかにPHP4よりもPHP5のほうが遅い(ような気がする)。現在XREAやロリポップを含めて5種類くらいのサーバを試しているが・・・。明らかにPHP5のサーバは遅い(ような気がする・・・といささか弱気な意見ではあるが)。

XREAではPHP4サーバとPHP5サーバを2つ借りている。PHP4はずいぶん前につくったウェブをまだしばらく運営するために借りたつもりだった。だからPHP5サーバにWordPressをインストールし、すでに複数のウェブを運用していたのだが、これがどうにもこうにも遅い。なんでトップページの表示に30秒と科かかってしまうのか。

キャッシュを入れたり、なんだかんだ試してみたけれど、やっぱり一発目のアクセスになると数十秒かかってしまうのだ。最初は「クソ」なサーバ借りちゃったんだ・・・と思っていたけど、ふと以前のクライアントさんに納品したときにことを思い出した。確かそのときもPHP5のサーバにWordPressで納品して遅かったのだ。

もしや。

と思ってPHP4なサーバにサイトを一つ移転させてみた。面倒な作業ではあるが、表示に30秒とか1分もかかるんじゃ使い物にならないから。
するとあら不思議。普通に速い!。あれだけ悩んでいたのに・・・キャッシュをいれても少ししか速くならなかったのに・・・。これは絶対WordPress内のコードに問題がある(んだと思う)。とてもWordPressの問題を追ってる時間はないので、どなたか偉い人が早く改善してくれるのを待つ。それまでは・・・お客さん納品用にWordPressは使えないな。

SQLiteはPHP4でも使えるかも

2008/03/17 | SQLite

SQLiteはPHP5から標準で使えるようになった機能だ。しかしPHP4でも使える場合がある。

どんな具合になっているのか。

SQLite関連はPECLライブラリで開発されていたので、モジュール拡張されていれば使用できるということになる。つまりモジュール「sqlite.so」が組み込まれていればいい。これを確認するにはphpinfo()関数を実行するのが手っ取り早い。

表示された中でsqliteがあればOK。

たいていの共用レンタルサーバではMySQLが使用可能だけど、作成できる個数が限定されていることが多い。つまりデータベースが無制限に作成できるわけではないから、自ずとひとつのデータベースの中でプレフィックス文字列を変更するなどして使うことになるのだが、必然的にテーブル数が増えて視認性・操作性が悪くなる。SQLiteの場合は単にファイルを生成するだけだから、容量さえ契約の上限を守っていればいくつでも作成可能なわけだ。つまり作りたいだけ作ることができる。これは魅力的だ。

自分にとってはファイルひとつコピーするだけでバックアップできるところが一番の魅力でもある。

そんなお手軽なSQLite。PHP5が一般的になって、対応アプリが増えれば絶対に流行るとは思うのだが・・・。

携帯からのアクセス振り分け

2008/03/16 | ケータイ

携帯からのアクセスを振り分ける場合、やり方としては大きく分けて2つある。

お手軽なのはUSER_AGENT(ブラウザ)をみて振り分ける方法だ。新機種が出るごとに一応チェックの必要はあるのだが、まぁ一般的に使われている方法だ。

if(strstr($_SERVER[‘HTTP_USER_AGENT’],”DoCoMo”)){
  //ドコモ
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”Vodafone”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”SoftBank”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”MOT-“)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”J-PHONE”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”KDDI”)){
  //AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”UP.Browser”)){
  //AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”WILLCOM”)){
  //Willcom
}else{
  //PC
}

こんな感じか。ただしPCからのアクセスではブラウザのUSER_AGENTを書き換えてしまうこともできるので、そういう場合はたとえPCからのアクセスであっても携帯とみなされる。

別の方法として、アクセスもとのIPで判別する方法だ。こちらは$_SERVER[‘REMOTE_ADDR’]で判断する。IPアドレスは各キャリアのサイトで公表されているのでそこを参考にするわけだが、変更もあるようなのでこちらも時々チェックする必要があるだろう。IPアドレスが公表されているページは以下の通り。

ドコモ
ソフトバンク
AU
Willcom
イーモバイル

しかしまぁ、一番端末が多いドコモのIPアドレスが一番少なくて、一番端末数が少ないWillcomのIPアドレスが一番多いとは・・・(イーモバイルはちょっと例外ということで)。

こちらの難点は、たとえばi-mode simulatorなどのPCで携帯端末の画面表示をチェックするようなツールは使用できなくなることだ。これらのソフトはキャリアの回線を通らないので、当然IPアドレスが上記のようにはならない。

はてさて。どちらがいいのやら。
どうも最近いただいたコメントを読む限り、USER_AGENTをチェックして、キャリア判別だけでなく機種判別まできっちりやる必要があるようなのだが・・・。仕事の重要度と金額によるかな。
何も考えずにPEARの携帯判別ライブラリを使って「後は知りません」といってしまうのが、ある意味いいかもしれない(無責任モード)。

WordPress高速化プラグイン「wp-cache」のことで

2008/03/15 | SNS/CMS/ブログ

WordPressをよく使っている。サーバに依存する部分もあるかとは思うが、とにかく遅く感じる。いったんブログを開いてしまうとそこそこのスピード感があると思うが、数日ぶりに開いたりするととにかく重く感じる。理由はわからないけれど。

そこでキャッシュプラグインをインストールしてみた。
ダウンロードは以下のサイトから。
WP-Cache2

キャッシュを作成して高速化するわけだから、当然キャッシュのファイルが作成されるはず。でもってインストール手順でwp-content/cacheというディレクトリを作成して、そのディレクトリに書き込み権限を与えているのだから、その中にキャッシュファイルが作成されるのだから、ファイルはどんどん増えるはず。

ところが、キャッシュファイルが作成されない。つまり何の役にも立っていないわけだ。よくよく調べてやっとわかった。設定ファイルの書き換えで、書き換える場所を厳密に守らないといけなさそうだ。

このプラグインをインストールする際に、wp-config.phpを書き換えて以下の一行を加える必要がある。
define(‘WP_CACHE’, true);

この行を記述する場所が重要なのだ。どこでもいいだろうと、ファイルの最後に書いたりすると、それは動かない。少なくとも以下の行よりも上に書く必要があるのだ。

require_once(ABSPATH.’wp-settings.php’);

だから結果として以下のように記述した。
/* That’s all, stop editing! Happy blogging. */
define(‘WP_CACHE’, true); // 新しく追加した行

define(‘ABSPATH’, dirname(__FILE__).’/’);
require_once(ABSPATH.’wp-settings.php’);

これで無事キャッシュファイルが作成されることを確認した。多分これで動作しているはず。動作も早そう。

ちなみに正しく動作すると、出力されるHTMLの最後に以下のような行がつけられる(表示したブログのソースを確認してみればいい)。
<!– Dynamic Page Served (once) in 29.672 seconds –>
<!– Cached page served by WP-Cache –>

とりあえず・・・よかった。ただうまくいかないこともあるようなんだけど・・・。原因追求の必要ありだ。


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