[PHP-dev 213] Re: [PATCH] multibyte patch for PHP 4.1.0
Youichi Iwakiri
php-dev@php.gr.jp
Mon, 14 Jan 2002 14:17:20 +0900
いわきりです
Masaki Fujimoto wrote in <20011223000555.F0A0.MASAKI-F@fides.dti.ne.jp>:
>ふじもとです。
>Tomoyuki Asakawa <tom@asakawa.ne.jp> wrote:
>> ところで、このパッチは、Zendコンパイラ/オプチマイザと互換
>> はあるのでしょうか?
>すみません、実は未検証です。APCは構造的に問題ないと思うのですがZend製品
>に関しては自信がありません。どなたか動作させてみた方がいらっしゃると良い
>のですが。まとまった時間がとれたら検証したいですが、ドキュメントの和訳を
>優先させたいのでしばらくは無理そうです。
まだ、PHP-4.1.0対応のZend Optimizerが出ていないのでなんとも言えませんが、
zend_extensionとして提供されてきたZend Optimizerなので、
zend_compile.cとzend_execute.cにあるcompile(), execute()を
フッキングして独自パーサ(最適化パーサ)を通して中間コードを
生成しそれを実行可能なexecutorに渡す動作だと思います。
藤本さんのpatchですとZend Optimizerに寄って置きかえられる前の
compile()関数が呼び出すlanguage_scannerの箇所に手を加えるので
置きかえられた時点で機能しなくなると考えてます。
どうしたらZend製品と相性良く出来るか考えたんですけど
結構大変に成りそうです。
1. compile(), execute()内にあるFile I/Oを外部に出す。
2. compile()に渡す前処理としてファイルを読みこみEUC,もしくはUTF-8に
変換する
3. compile()は通ると思います。
4. execute()の中でrequire_once, require, include_once, includeが
出てきた場合もexecute()が独自にI/O処理をせず'2.'の変換用の関数を
呼び、変換されたものをcompile()に渡す。
これだとなんとかなるかもしれませんが、
現実解としてはZend製品とは同時に使わない(使えない)とするしかないかも :(
Tomoyuki Asakawa <tom@asakawa.ne.jp> wrote:
>> そのおかげで、文字コードや、プログラムという、ものを理解できない
>> ディザイナに、phpコードの含有した、htmlを渡してもなんとかなりました。
>> PHP4は現状では、上記の人に使わせるには、おまじないが多すぎて、結構難
>> しいです。
>> はやくPHP3並に、なってほしいと思います。
>>
>> PHP3は、ソースを内部コードに自動変換する機構があった
>> おかげで、internal_encodingをEUCにすることで、すべて?
>> 丸く収まりました。(ファイルのコードでは混乱しましたが)
運用で切りぬけましょうと言うのは、前向きじゃないですね。
一応こんな感じで、
サーバ内のドキュメント置き場
/www/htdocs/develop 確認用のドキュメント置き場
/home/web_contents/incoming/ デザイナさんたちにファイルを置いてもらう場所
/home/web_contents/converted/ euc変換後のデータ置き場
あと
ln -s /home/web_contents/converted /www/htdocs/develop
とかもしておけば、
cronで数分置きにincomingを監視し、新規作成または更新されたファイルを
変換しconvertedディレクトリへ置く。
#htmlファイルのヘッダにcontent-encodingなんかがあるのでそれも置換しなきゃ
#いけないですけど。
変換までに多少のタイムラグがあるのでイライラする
人が出るかもしれませんが、そこはお茶でも飲んでもらって
リラックスしてもらった方がよいかも