タグ: php
memcached の返り値まとめ(Pecl::Memcached)
memcachedにnullやbooleanなどを入れたらどうなるか、曖昧になっていたので調べた。
テストコード
(PHP5、Pecl::Memcached使用)$m = new Memcached();
$m->addServer('localhost', 11211);
//test data
$items = array(
'string' => 'string',
'integer' => 1,
'array' => array(
1,
'a' => 'A'
),
'true' => true,
'false' => false,
'empty' => '',
'null' => null
);
//sets
$m->setMulti($items);
//keys
$keys = array_keys($items);
//add key has no value
$keys[] = 'not_found';
//gets
$null = null;
$result = $m->getMulti($keys, $null, Memcached::GET_PRESERVE_ORDER);
//result
var_dump($result);
[PHP] simplexml_load_fileが妙に遅いときがある
WEB上にあるとあるXMLを読み込むのに、以下のようにやると非常に遅い。
simplexml_load_fileを使ってXMLを読み込む
$xml = simplexml_load_file('http://hoge.com/sample.xml');
(5.019sec)
んー…
【PHP】月齢計算用ライブラリ
URLをbitlyで短縮するSmartyプラグインを作った
3重くらいに今さらですが、Smartyプラグインがマイブームです。多分あとで後悔することになるとは思いますが、オプション的な機能をSmartyプラグインで分割していくとテンプレートと処理プログラムがすっきりするのが快感で。とりあえず無理しない範囲で分割していたり。 で、Twitterへの投稿をサポートする目的でURLを短縮する必要が出てきて、まぁ別にJavaScriptでも良かったんですが、個人的に応用しやすいのはJavaScriptよりSmartyプラグインの方だったのでさっくりプラグインを作りました。 なお使用に当たっては、tknzkさん謹製のopenpear/Services_Bitlyを利用させていただきました。感謝します。
【PHP】日の出・日の入り計算用ライブラリ【改訂版】
Codeのリニューアルに合わせて、日の出・日の入り計算用ライブラリを書き直し、「Suntime.php」として改めてリリースしました。PEARとかに上げれたら良かったんですが、コードの内容はもとより形式などかなり不安だったのでとりあえずGist@GitHubにあげてあります。
Download
http://gist.github.com/gists/225915/download【PHP】 TokyoTyrant(NET_TokyoTyrant)
キャッシュの用途の問題で、memcachedではないキャッシュを使おうと思って色々調べたのだけど、やっぱり管理面の容易さを考えてTokyoTyrantかなぁってことで、試してみた。
Pecl::Memcached使ったら嵌った。
TokyoTyrantはmemcachedのインターフェイスも採用しているので、クライアントがそのまま流用できる。小さなデータで試したところ問題なく動いたので、そのまま本番データを流し込んでみたらばどうも上手くデータが返ってこない。なぜだ。 色々調べてみたところ、どうやら、クライアントとしてPecl::Memcachedを使っていたのが良くないらしい。Pecl::Memcachedはデフォルトで一定サイズ以上(デフォルトでは100バイト以上)のデータを圧縮してくれるのだけど、どうも取り出すときに解凍してくれない。圧縮されたまま。memcachedとして使えば問題ないので、互換インターフェイスの問題なんだろう。そーなのかー。で、結局、NET_TokyoTyrantを使うことにした。
圧縮の設定を切っちゃうとか、Pecl::Memcacheを使うとか、あれこれやっても良かったのだけど、要するに互換インターフェイスよりネイティヴの方を使った方が良ってことじゃね?と思ったので、PEARのNET_TokyoTyrantをインストールしてみた。Net_TokyoTyrantとは? PurePHPで書かれた、TokyoTyrantのネイティブなインターフェースを叩くライブラリです。 memcache互換のインターフェースなどとは違い、TokyoTyrantのLUA拡張などTokyoTyrant本来の機能をほぼすべて使えるというのが特徴で
XHTMLの操作で嵌った
先に結論を書いておくと、W3CからDTDファイルのリクエストに対して503 Service Unavailableが返されていたため、DOM周りのプログラムが上手く動かなくなったことが原因でした。
関連
W3C Systeam’s blog – W3C’s Excessive DTD Traffic【メモ】 mkdirのrecursive 【PHP】
PHP5ではmkdirにrecursive(再帰的にディレクトリを生成する)が実装されているらしい。 マニュアル読んで初めて知ったw 例えば、以下のようなディレクトリ構造を作成したい場合、 (a, b, cとも存在しないディレクトリ、十分なパーミッションがあるものとする)
/a/b/c
次のように書けば実現できる。
mkidir('/a/b/c', 任意のモード, true);
mkdirなんて改めてマニュアル読んだりしないからなぁ。
マニュアル読むのって大事ね。
PHP: mkdir – Manual
【メモ】Atom APIでTypePadに投稿するためのメモ
自分の無知さ加減を思い知ったのでメモっておく。泥縄、付け焼き刃注意。