[PHP-users 16321] Re: PHP 5.0.0 Beta 1 released!!

Sakamoto ringring @ zb4.so-net.ne.jp
2003年 7月 1日 (火) 04:05:21 JST


RisaPapa(坂本)です。


>   バンドル DBMSの デフォルトだった MySQL が SQLite に
> 変わりました。こちらも気になります。
>
> スピード比較なんぞもあります。
> http://www.sqlite.org/speed.html

私もとても気になります。
MySQLのライセンスの関係ではないでしょうか。
知り合いで、英語版PHP5の本を書いている人が言うには、
PHPの開発者たちがMySQLのライセンスに不満が多いようです。
日本ではPostgresSQLがMySQLより多く使われているように
見えますが、世界的にはMySQLの方が圧倒的にユーザ数が多く、
PHPのお陰でMySQLが今のように普及したのではないかと
思うところもあります。

私はGPLライセンスはアメバのような性格を持っていると思っていて
それほど好きではないですが、これに企業が入り込んで
ライセンスを追加することによってさらにややこしくなることには
非常に戸惑いを感じます。どこまでがGPLのコードでどこまでが
自分のソースコードであるくらいはっきりさせてほしいところです。

SQLiteについては
「Sources are in the public domain. Use for any purpose.」
と書いてあるので企業などでもライセンスに気を使わずに
安心して使えるので私は気に入っています。もしこのままPHPの
デフォルトのDBMSとしてサポートされれば一気にユーザが
増えていくでしょう。韓国の開発者グループではMySQLの
開発陣営よりSQLiteの方がプログラマーの実力が上では
ないかという話題があがったりもしました。

PS.
WIN32環境でPHP5のFastCGIをテストしてみましたが、IIS用の
OS_SetImpersonateがAPACHE2では誤作動をしました。
cgi_main.cにFastCGIオップションを追加作成した開発者に
以前にもメールを出しましたが、まだ直っていないようです。
fastcgi.comからダウンロードしたライブラリとOS_SetImpersonateを
削除してコンパイルするとAPACHEでは正しく作動するのを確認しました。
恐らく,PHP-4.2.3バージョンまではこの関数を使わなかったとおぼえています。
その他、「int max_requests = 500;」とデフォルトに設定されていて
500回のアクセス後プロセスを終了してからFastCGIのプロセスが
新しく生成されなければならないのですが生成されない問題もありました。
これはStaticサーバで起こるので、「int max_requests = 500;」という関連
部分を削除してAPACHE2側の設定でMaxRequestsPerChildを設定して
回避する方法もあります。主にこれはメモリリークを回避する手段として
使われます。LINUXの場合はPerlを利用して該当プロセスのみ
cronなどとあわせて簡単にコントロールすることができます。

今までWIN32環境でAPACHE2のmod_fastcgiは作動しませんでしたが、
mod_fastcgi-2.4.1バージョンからは安定して作動するようになりました。
Perl-5.8.0ではメモリリークがありました。5.6.1はかなりスピードが
落ちます。5.005_03と5.6.0と比べると50%以上遅い結果を得ました。
互換性などを考えるとFastCGIでの運用はPerlは5.6.0バージョンが
ベストではないかと思います。

FastCGIでPHPを開発する方は参考になればと思います。

RisaPapa



PHP-users メーリングリストの案内