ポップフライでタグ「PHP」が付けられているもの
PHP×携帯サイト デベロッパーズバイブル
荒木 稔
ソフトバンククリエイティブ 2008-09-27
売り上げランキング : 383
おすすめ平均 
Amazonで詳しく見る by G-Tools
携帯サイトの知識を増やしたかったので購入してみました。
今まで携帯サイトと言えば、キャリア差をさほど意識する必要もない至極シンプルな静的ページや問い合わせCGI程度しか作ったことが無かった自分にとって、知らなかったことだらけの技術満載。読み始めてしばらくは未知の世界にワクワクでしたが、そのうち一方ではこれって覚えること多過ぎだな・・・と若干テンションが下がってきました。
どこかで「携帯サイトは開発2割+テスト8割」なんてことを目にしましたが、それに加えて仕様を把握するのでやること5割増し、でさらにキャリア参入やら機種対応やらで新しい技術にもどんどん対応が求められることもあったりして。その分メンテナンスも必要になるし。携帯向けのWebアプリがもう一つ充実してこないのは、こういう開発側の敷居の高さに依る点は大きな要因だろうなと感じます。
本書でも一番ページ数が割かれている絵文字対応にしても(統一化する方向ではあるみたいですね。→モバイル業界について勉強する会に行ってきました : akiyan.com)、各キャリアで独自拡張機能が含まれるxhtml対応にしても、どうして標準化できないんだろうなーと単純に思ったりします。いかに独自サービスを提供してユーザを囲うかていうことはあるのでしょうが。
そんなことを思うと、プラットホームというレイヤーから新たに切り込むAndroidが、今後の携帯コンテンツにどういう影響を与えるかは気になるところではあります。
改めて今携帯サイトの技術、ノウハウを持っている所が強いのは分かるような気がします。テンション下がってる場合じゃないですね、ちゃんと読んどこ。
PEARのHTTP_Requestはhttp通信が簡単に行える使い勝手のいいクラスなのでよく使いますが、レスポンスが保証されていないWeb APIとのやり取りなんかでタイムアウト時間を設定したいことがあります。
そんな時にtimeoutオプションを指定してみるのですが、時間通りストップしたりしなかったりと動作が今一つ不安定でした。
Pear パッケージ HTTP_Request - どうにかなるBLOG
こんな記事も見かけたりして、これはいよいよソースに手を加えないとだめかな・・・と思っていたところ、PEAR公式マニュアルを眺めていたら、readTimeout という知らなかったオプションを発見。
require_once 'HTTP/Request.php';
$url = "http://www.example.com/";
$option = array(
"timeout" => 10, // 接続Timeout秒数
"readTimeout" =>
array(10, 0) // ソケット読み書きTimeout秒数
);
$http = new HTTP_Request($url, $option);
$http->sendRequest();
$body = $http->getResponseBody();
print_r($body);
おぉ、なんだか期待していたような動き!
それぞれのオプションについては、
- timeout 通信先とのコネクション確立までのタイムアウト設定(秒
- readTimeout 接続後のパケットやり取りする時間のタイムアウト設定(秒、ミリ秒)
ということと理解しておきました。
やっぱりマニュアルはちゃんと読まないとな。
クライアントから文字コードUTF-8でメールフォームのページを作ってくれ、と言うことでPHPでざくっと制作。
セキュリティ上こちらはサーバにアクセスできないので、ファイルをあずけてアップロード~テストはクライアントに確認してもらい、OKが出たのでひとまずそのまま公開。
ところがしばらくして、日本語を送信すると文字化けするとのお知らせが入る。
まあmbstring系の問題だろう、とphp.iniの設定を依頼してもらったところこんな設定になっていましたと。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
PHPのマニュアルにも同じような設定が載っているので、おそらくそれに合わせたんじゃないかと思われますが、、
これではencoding_translationでパラメータがEUCに自動変換されちゃって、UTF-8を想定して書かれたコードでは化けるわけです。
コードの記述を制限してしまうencoding_translationなんて効かしておく必要ありますかね?
自動変換されるより、自分で文字コード意識しながら書いたほうがよっぽど分かりやすい。
結局、.htaccessを追加で上げてもらって、とりあえず文字化けは解決しました。
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation Off
巷で注目の『CakePHPガイドブック』の発売予定が10月24日(水)に決まったようです。
(マイコミに問い合わせていたら回答がきました。)
CakePHP単体での日本語解説書としては初めてのものだそうで、
実はこの本を機会にCakePHPやってみようかなぁと考えていたこともあり、実に楽しみです。
Amazonではもう予約受け付けてますね。頼んじゃおうかな・・・。
大量データのDELETE/INSERTを処理するバッチ処理をPHPで走らせていたのですが、回数をこなす毎にDBのパフォーマンスが目に見えて落ちてきたため、処理の最後にvacuumを実行することに。
PHPからvacuumをキックする単純な処理なはずが、これがうまく動かない。
PostgreSQL関数経由ではvacuumは実行できないのかとか、いろいろと悩んでいたところ、ようやくあるエラーログに気が付きました。
WARNING: skipping "tablename" --- only table or database owner can vacuum it
要は実行ユーザの権限の問題でした。
wwwユーザにDBの権限を付与したものを使用していたのですが、vacuumを実行できるユーザーは、
・スーパーユーザー
・DBまたはテーブルのオーナー
に限られるいうことのようです。
Simple PHP BlogはPHPベースのブログソフトです。
DBが不要な簡易インストールタイプのブログということで試してみることにしました。
まずソースをダウンロードします。
http://www.simplephpblog.com/(右メニュー「Download」バナーのリンク先から落とせます。)
落としたファイルを解凍したら、サーバにごっそりUP。
ファイルをUPしたURLにブラウザからアクセスするとインストール画面が始まります。
言語選択画面が出ます。「Japanese」を選んでおきます。

「データを格納する3つのフォルダ('config', 'content', and 'images')を自動作成します。」
という確認画面が出ます。そのまま進みます。

※ここで書き込み権限が無いと、パーミッションエラーでフォルダ作成に失敗するようです。
私の場合、とりあえず上記フォルダを手動で作成し、書き込み権限を与えておきました。
フォルダ作成に成功したメッセージが出ます。そのまま進みましょう。

※上の画面はあらかじめフォルダを作成してあったので
「既に存在してます」というメッセージが出ています。
ユーザー名とパスワードの設定をします。入力したら次へ進みます。

パスワードファイルの作成画面が出ます。
password.phpという名前のファイルを作り、
枠内のPHPソースを保存して、サーバ上のconfigディレクトリ下にFTPでUPして下さい。
(ここだけは手動で作業する必要があるようです。)

ログイン画面が出ます。
先ほど登録したユーザー名とパスワードでログインします。

これでインストール完了です。
あとは管理画面から詳細設定やらエントリーを作成してブログを作成できます。

と、このような感じで特に面倒な環境設定をすることもなく、簡単にインストールすることができました。
少し動かしてみましたが今のところ気になる点は、
・更新Pingが効かない(設定は登録されるのですが・・・効いてない?)
・HTML書き出し機能が無い(「静的ページ作成」機能はあるのですが作成したファイルをPHPからインクルードするものです。)
・日付関連のオプション設定が反映されない。(設定ファイルのパーミッションの問題?)
一つ簡単なサイトでお試ししてみてみたいと思います。

