Google AnalyticsのAPIをPHPから叩く
Blogのアクセスレポートで利用してただけど、先日Fenrirのデベロッパーズブログで見かけたのでちょっと書いてみる。
Blogのアクセスレポートで利用してただけど、先日Fenrirのデベロッパーズブログで見かけたのでちょっと書いてみる。
#需要がどれだけあるかわかりませんが PDOを使ってデータを取得する際に、空文字をNULLに変換して取得することが出来ます。 PHP: PDO::setAttribute – Manual
$connection = new PDO( 'mysql:dbname=dbname;host=your_host', 'user', 'pass' );
$connection->setAttribute( PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING );
PDOの設定ってだいたいライブラリの中にあるし、魔法の呪文みたいになってて意味をいちいち見ないけど、
たまに見ると面白いなというそんな話。
MLBのデータを引っ張ってくるためのRubyライブラリ「Gameday_API」に影響されて、 とりあえずバッターの成績を引っ張ってくるようなPHPライブラリを書いてみた。 なんかこんな感じで使えるようになってます。
現在進行形で嵌っているのですが、原因はともかく朧気ながら状況が把握できてきたので自分的まとめ。
いつまでもAmazonのアフリエイト作成ツールに頼ってリンクを作成するのも何だかなぁと思ったので、APIを叩いて結果を取得してみた。色々とやり方はあるだろうけれども、PHPでやる場合にはPEARライブラリの「Services_Amazon」を利用すると簡単。
HTML文書を読み込んでパースするときに、今までは正規表現でやっていたんですが、 処理がどうしても面倒な感じになるし改変にも弱いので、DOMでやることにしてみたらば見事に嵌るなど。 読み込む文書がXMLだと問題ないんですが、HTML、特にShift-JISで書かれた文書だとなぜか文字化け。 色々と検索した結果、多分これで行けると言うのにたどり着いたのでメモ。
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS');
これだと、表示上文字化けは起きません。
それどころか、コメント以外の部分は普通に日本語で書き出されているようです。
ので、このままでもいいかなーという感じ。
まぁとはいえ、あんまりDOMについて解っていないので、だいぶ泥縄であれこれやってるんですけどね…
サーバの全面引っ越し(およびドメインの変更)はいつになることやら。
それほど負荷を掛けているわけではないのでまだパフォーマンスを気にするレベルにはありませんが、 出来ることはやっておこうかと言うことでPHPアクセラレータをインストール。 eAcceleratorを試そうかなーと一瞬考えもしたけど、まぁインストール簡単なのを、ということでAPCを選択。 PHP: APC – Manual
さくらインターネットから、「ファイル数多すぎるんで削除してください」という連絡が来たのでなんのこっちゃと調べたら、 この間の設定変更で指定したセッションファイル格納用ディレクトリが溢れているという話らしい。おおっと。 でもって、話をよくよく聞いてみるとセッションが使用不可になったのも共用ディレクトリである「/tmp」に保存できるファイル数が10万ファイルまでに制限されているからだそうな。当たり前か。 本当のことを言うと、そう大したユーザー数がいるとも思えないサービスなのに溢れすぎじゃないかと思うけど、 設定を見返すのは後回しにしてとりあえず現状を改善しないと行けない。 よくよく考えてみて、「/tmp」ディレクトリのパーミッション的に階層化も出来そうにないし、 こりゃセッションデータをMySQLに格納するしかないかなと言うことで以下の設定を。
こちらの件に関連して。 [umbls] ログインできない不具合を修正しました。 – nplll 根本的な理由はさっぱり分からないのですが、なぜかさくらインターネットのサーバにてセッションが使用できなくなっていました。初めはプログラムのバグでログインできないんだと思って、自分が書いたコードやSymfonyの設定周りを洗っていたのですが、なんか何をどうやっても上手くいかない。それどころか、簡単なセッション処理のプログラムすら動かない。session_start()して、$_SESSIONを使って格納しただけなのに、保存されないのね。
<?php
session_start();
echo 'Welcome to page #2';
echo date('Y m d H:i:s', $_SESSION['time']); // 1970 01 01 09:00:00と表示されてしまう
?>
散々嵌ったのだけど、もしかして、と思って次のことを試してみたら直りました。
パーフェクトPHP (PERFECT SERIES 3) 小川 雄大 柄沢 聡太郎 橋口 誠 技術評論社 2010-11-12 売り上げランキング : 4615 Amazonで詳しく見る by G-Tools |