iPhone/iPadのホーム画面コンテスト開催中!賞品は iTunes カード!

Monthly Archive2008/05



CakePHP & event 2008/05/31 16:24

[告知] 第3回CakePHP勉強会が開催されます。

第3回CakePHP勉強会を開催します。

CakePHPの活用事例やさまざまなネタで交流し、さらに広がるCakePHP界を盛り上げましょう。

第3回CakePHP勉強会 – events.php.gr.jp

第3回CakePHP勉強会が6/27(金)で開催されます。

場所は前回と同じくトライコーンさん(いつもありがとうございます!)です。

今回もyandoさんの尽力のおかげで強力な事例発表があり、かなり楽しみな内容となっています。Cakeな方もそれでない方も是非ご参加下さい;-)

申込は6/3 13:00から↓のリンク先からお願いします。ここ最近PHP関連の勉強会は申込開始から数十分(!)で定員が埋まってしまうこともあるので、お忘れなく。

概要・申込は、第3回CakePHP勉強会 – events.php.gr.jpからどうぞ。

CakePHP & PHP 2008/05/21 00:01

CakePHP 1.2beta対応-CakeInfo-0.1.2リリース

CakePHPアプリケーションの内容をphpinfo()風に見せるCakeInfoをCakePHP1.2-betaに対応しました。

OpenFLPを表示するとこんな感じです。

主な変更点は以下です。

  • CakePHP1.2-beta対応
  • Controllerにaction_methodを追加

今回追加したControllerのaction_methodでは外部からアクションメソッドとして呼べるメソッドを表示しています。これを見ると公開するつもりの無いメソッドが公開されていないかを確認できるので、自作のCakeアプリにて試してみてください。

設置

設置方法は簡単です。
まず[http://www.1x1.jp/blog/download/cakeinfo-0.1.2.zip]からzipファイルをダウンロードします。
あとはダウンロードしたzipファイルを展開し、[cakeinfo.php][logo-mini.gif]を[app/webroot/]に設置するだけです。

設定

現在のところ設定項目は[DATABASE_CONFIG_FLAG]一つだけです。

  • DATABASE_CONFIG_FLAG
    この定数が設定されていればDatabase項目が表示されます。(デフォルトはコメントアウト)

自作のアプリ以外にも、オープンソースで公開されているシステムの解析(の取っかかり)にも使えますね。お試し下さいませ:-D

CakePHP & PHP 2008/05/18 03:11

CakePHP パフォーマンスが出ない時は、例えばフレームワークを避ける

フレームワークを使ってパフォーマンスに問題があったため、Plain PHPで書き直したという話です。

先日受信したメールの内容を.forward経由でDBを保存するという処理を実装しました。まあ良くある処理なのですが、このシステムではWeb側をCakePHPで実装していたので、メール処理もCakePHPのCLI機能(cakeコマンド)を利用しました。

実際に動作してみて数件程度では問題無かったのですが、負荷試験として短時間に数百件、数千件のメールを受信させると、LAが80程度まで跳ね上がりました。処理自体を見直したり、不要なSQLをカットしたりしたのですが、それほど大きな効果はありませんでした。

これはフレームワークの起動に時間がかかっていると判断し、CakePHPを使わずベタなPHPスクリプトだけで実装してテストすると、同じ負荷をかけてもLAが3-4程度まで落ちました。

timeコマンドで実行時間を計測しても、3-4倍の差がありました。(もちろんPHPスクリプトだけの方が早い)

CODE:
  1. $ time hoge.php

実はこういった場面はこれまでも経験していて、Web側では負荷が高い箇所やパフォーマンスが出ない箇所ではフレームワークを使わずに実装することがありました。CakePHPにCLI対応が含まれているとはいえ、CLI環境においてもパフォーマンスが出ないシーンでは、あえてフレームワークを使わないという選択肢は覚えておく必要があります。

ただこういったケースがあるからといって、どんなケースでもフレームワークを全く使わないというのは賢明ではありません。

フレームワークで構築することには多くの利点があり、ある程度習得しているフレームワークであれば、PHPスクリプトだけで開発するよりも生産性や安定性等々で有利です。フレームワーク上で十分に性能が出ている場合はそのままで何ら問題ないです。

このあたりのバランスを保つのが大事なのですが、まずはフレームワークで構築しておいて、問題がある箇所を崩していくというアプローチが単純で良いかと。

今回の場合、フレームワーク上で実装していたものをPHPスクリプトで再実装したので、同じ機能をアプローチを実装しただけなので、短時間で再実装することができました。プロトタイプ的にフレームワークで組むというのも良いかもしれません。

CakePHPのDB設定を参照する

これに関連してミニTipsを。

フレームワーク無しで実装する際でもせめてDBの接続情報くらいは共有しておきたいものです。そこで今回はPHPスクリプトから[app/config/database.php]を参照するようにしました。

app/config/database.phpの情報からDBに接続する。

PHP:
  1. require_once('/path/to/cake/app/config/database.php');
  2.  
  3.    public function connect() {
  4.      $db = new DATABASE_CONFIG();
  5.      $dsn = sprintf("dbname=%s user=%s password=%s"
  6.                  , $db->default['database'], $db->default['login'], $db->default['password']);
  7.      if ($db->default['host']) {
  8.        $dsn .= sprintf("host=%s port=%d", $db->default['host'], $db->default['port']);
  9.  
  10.      }
  11.      $this->conn = @pg_connect($dsn);
  12.      if (!$this->conn) {
  13.        $this->log(__FILE__ . ':' . __LINE__ . ' ' . $dsn);
  14.        exit;
  15.      }
  16.    }

Webサービス & twitter 2008/05/10 03:35

Twiterで一番followされているのは誰? – TwitDir

Twitterで一番followされている人は誰でしょう?

そんな時便利なのが、Twitterユーザに関する情報を表示してくれるTwitDirというサービスです。

このサイトではキーワードによるユーザ検索がメインのようですが、ユーザのランキングが公開されており、これがなかなか面白いです。ランキングには以下のものがあります。

  • followされている人 - Top100
  • followしている人 - Top100
  • お気に入り - Top100
  • 更新 - Top100

冒頭の疑問ですが、followされている人Top100を見ると、@leolaporteがFollowers:29,763でトップでした。上位10ユーザを見ると軒並み5桁のfollowersとなっていて、10位の@ macrumorsでも15,879になっています。ここまで来ると"つぶやき"では無いですね;-)

他のランキングを見てもTop10には日本語ユーザはほぼ見当たりませんでした(botを除く)。その中で異彩を放っているのがお気に入りTop100です。

日本語ユーザだらけ:-D

Top100まで見てもほとんどが日本語ユーザでした。これは間違いなくふぁぼったーの影響かと。

ちなみにこのサイトでは↓のようにTop10/100/1000に入る閾値が表示されています。例えばfollowersでTop100入りするには3,586ユーザにfollowされる必要があります。ランキング上位を狙う人は目安にすると良いでしょう。

動作が重かったり、たまにPHPの例外が飛んできたりするお茶目なサイトですが、なかなか遊べるのでは;-)

PHP & Webサービス & twitter 2008/05/04 03:22

TwitterにいるPHPのすごい人リスト

PHP Community on Twitter

ZEND DEVELOPER ZONEでPHPコミュニティのTwitterアカウントが紹介されています。

リストに並んでいるのはPHP本家の人や海外の人ばかりだったので、日本のすごいPHPerのTwitterアカウントを並べてみました。(()内はざっくりです;-))

TwitterをはじめたPHPerは要チェック!

他にもTwitterアカウントが分からない人(この人とかこの人[@masugata?]とか)やリストに入っていない人、是非教えて下さい。:-D

追記(2008/05/04):@kensuuと僭越ながら@shin1x1を追加。

追記(2008/05/09):@mumumuと@masugataを追加。