をコンパイルすると、APC、eAcceleratorなどのPHPキャッシングプログラムを使用すると、オペコードがメモリに保存され、その後のリクエストで高速に実行されます。私の質問は、phcやHPHPなどのコンパイラを使用していると仮定して、スクリプトをコンパイルするのはいつもより速く/速くないのでしょうか(動的な構造に問題があることは分かっていますが)。コンパイルしてそのステップをスキップするだけで、Zend EngineがC言語の関数を使って再読み込みする必要があるので、オペコードの格納はなぜか面倒ですか?PHPキャッシュの質問と私の理解から
答えて
単純にcにコンパイルして、PHPスクリプトを同じ方法で実行することはできません。 HPHPは実際のコンパイルを行いますが、PHPのスーパーセット全体をサポートしていません。
他のコンパイラは、実際にはバイナリにPHPインタープリタを埋め込んでいるので、実際にコードをコンパイルしているわけではありません。
PHPはコンパイルするつもりはありません。オペコードキャッシングは非常に高速で、99%のアプリケーションに十分適しています。フェイスブックレベルのトラフィックがあり、バックエンドのDBを既に最適化している場合、パフォーマンスを向上させる唯一の方法は、コンパイルである可能性があります。
PHPは標準ライブラリの薄層ではありません。
返信にタイムアウトするためのgracias。 「PHPが標準ライブラリの薄層ではない」と言ったときの意味をさらに説明できますか?返信用 – blacktie24
PHPがeval()
を持っていなかった場合は、(相対的に)簡単にPHP->コンパイル済みバイナリ変換を行うことはおそらく可能です。しかし、PHPはeval()を介して動的にスクリプトをビルド/実行することができるので、フル・バイナリを実行することはできません。コンパイラはあなたの動的コードが何をすることができないか分からないので、バイナリはPHPの全体を含む必要があります。あなたは小さな1または2kのスクリプトから大規模な複数メガバイトのバイナリに移行します。
thx!私はeval()を使わないと仮定し、動的構造の問題を取り上げました(私の元の質問の下にコメントとして投稿した別のスレッドのコンパイラと動的構造について別の質問があります)。コンパイルするのに効率的ですか? – blacktie24
私は「効率的」についてはわかりませんが、なぜそれが不可能なのか分かりません。 –
- 1. RMI理解質問
- 2. PHP解析の質問
- 3. 質問と代理質問
- 4. PHP XML解析質問
- 5. シンプルなpythonリストの理解の質問
- 6. PHPの構文解析の質問
- 7. 基本キャッシュの質問
- 8. PHPの配列処理質問
- 9. PHP PDOから多くの質問
- 10. ルストの特質とジェネリックスの理解に問題がある
- 11. PHPとmysqlの質問
- 12. PHPの場合の質問質問
- 13. PHPループの質問
- 14. PHPログインパスワードの質問
- 15. Regex PHPの質問
- 16. PHPゲッターメソッドの質問
- 17. PHPスタイルの質問
- 18. ファイルシステムのキャッシュに関するご質問
- 19. Rails 3のキャッシュに関する質問
- 20. ブラウザのキャッシュ問題を解消するファイルのバージョン管理
- 21. 私の質問
- 22. PHP、HTMLと短い質問
- 23. csvファイルの質問と解決策
- 24. jsキャッシュの問題と考えられる解決策
- 25. Androidイメージのキャッシュ - ハードとソフトのHashMapsの質問
- 26. PHPショートハンド質問
- 27. PHP XML質問
- 28. PHPループ質問
- 29. HTML/PHP質問
- 30. PHP MVC質問
また、私は別のスレッドを開始したこの質問のパート2があります:http://stackoverflow.com/questions/6525187/why-are-dynamic-constructs-difficult-for-php-compilers-hphp – blacktie24