php

namesapce on 5.3

PHP

Subject: RE: Namespaces patch backport Exactly, it will go to 5.3 of course. http://news.php.net/php.internals/31175 まじすか。

PHP_Compatの不可解な挙動

php

本日PEAR::PHP_Compatを使っていて不可解な挙動を見ました。 これを実行すると string(6) "200d0a"とかなるんですが、みなさんのところではどうですか? PHP/Compat/Function/mime_content_type.php が悪そうなこ…

PHPのコードキャッシュがなぜ速いのか

php

Matzにっきから。 私の理解が正しければ、スクリプトキャッシングは、プログラムのロード時に構文解析を行い、内部的に用いる中間表現に変換したものを保存しておくことにより、構文解析のコストを削減し、高速化を実現する技術である。PHP以外にもたとえばP…

PHPアプリの脆弱性をつくボット?

php

私が管理しているWebサーバのログに、PHPアプリの脆弱性を狙ってアクセスしてきているらしいボットの形跡がありました。約1秒の間に、以下のURLを連続してGETしています。 /a1b2c3d4e5f6g7h8i9/nonexistentfile.php /adxmlrpc.php /adserver/adxmlrpc.php /p…

PHPアクセラレータのパフォーマンス比較

php

id:shimookaさんがeAccelerator, APC, xcacheの3つのPHPアクセラレータに関してベンチマークを取ってくれました。 で、グラフと生データは以下の通り。グラフ、かなり見づらくてスミマセン。。。 eAcceleratorとAPCのパフォーマンス比較+xcache - Do You PH…

pcntl extensionを使って一定個数の子プロセスに作業させる方法

PHP

本日はノッキングオンさんで第22回PHP勉強会が開催されたので参加してきました。 その後の宴会で、PHPをCLIで使うときにexec()関数ではなくpcntl extensionを使って子プロセスを制御する話をしたら、周りの人の食いつきがいつになく良かったので、このネタで…

memcachedを用いた関数キャッシュ

PHP

昨年末のPHP東京勉強会でちょっと話したネタ。 これまでは関数キャッシュにはPEAR::Cache_Lite_Functionとかを使っていたのだけど、キャッシュ内容をディスクに書かれるのは遅い気がするし、最近はやぱしmemcachedでしょということで、Memcache extensionを…

関数/メソッドのオプションを柔軟に受け渡す

PHP

Tips公開が流行ってるみたいなのでそれに乗ってみます。関数やメソッドの引数が多くなると、呼び出し側で何をやっているのか分からない表記になりがちです。関数を定義する際もどれを省略可能にするかで引数の順番を悩んだりして…。 たとえばこんな関数があ…

file_exists_ex

PHP

http://blog.poyo.jp/archives.php/categ-1/year-2006/month-7/id-1152085878より。 コメントでいいかと思ったんだけど、ELFさんとこのCAPTCHAを突破できなかったのでTBで。:-) ファイルが存在しない場合に fopen を使うと、そのままでは Warning が出ちゃい…

GMP

PHP

PHP5のCVS版には、gmp_nextprimeという関数が入ってるらしい。これを使うとさしずめ空中戦になるわけか。

PHPな応募ないすね

PHP

キミならどう書く 2.0 - ROUND 1 - — Lightweight Language Ring でPHPな応募がない件について。(TB全部見てないので、もしあったらごめんなさい) ということでいっちょ書いてみました。 アルゴリズムに凝るのは苦手だし、ワンライナーは端からPHPに向いてな…

PHPフレームワークのリスト

PHP

超・極める! PHP のPHPフレームワーク特集に絡んで、フレームワークのリストがあったら下さいと編集さんからリクエストがあったので、ブックマークから抜き出してみました。ずいぶんあるなぁ。(ちなみにABC順に並んでます。) Achievo Tool Kit (ATK) http://…

array_push vs $array[] on PHP 5.1.2

PHP

続、array_pushって遅いんですねより。こちらでも試してみました。 start(); for ($i = 0; $i < $max; ++$i) { array_push($array, $i); } $t->setMarker('array_push finished'); $array = array(); $t->setMarker('array[] start'); for…