我刚刚学习php,发现php和java最大的不同是解释语言与编译语言的不同。当然解释型的动态性更好,不过也反映一个效率的问题。很多开源框架都是单一路口MVC模式。 我大概看了下:
index.php/model/value//para/value/para/value.....  
截取参数 : /model/value/para/value   已经模块参数动态引入相应的Action PHP文件:
假如我有1万个模块,index.php 每次include的东西都不同。 
我想问下:index.php每次include的东西不同,会不会生成1万个编译好的文件,比如:
index_usermodel.class (编译后的文件,不是php文件)。有高手能够解释下,PHP是如何编译的吗? 我们知道JAVA的Import是不存在效率问题,不知道PHP的Include是如何解决这个问题的? 

解决方案 »

  1.   

    底层不了解!据说不会,php没有常驻内存的东西。 每次都要重新加载。所以,尽量少加载是一个原则。 所以php程序要尽量“扁”。路由和inlucde都要短。据说apc之类的缓存只是解决了文件io的问题,但并不解决内存分配等问题。 如果没有apc,inlcude要尽量少。以前在javaeye讨论过个问题。
      

  2.   

    1、不会,这就是解释执行,与编译执行的不同
    2、每次 include 都会有一个编译过程,这就是你担心的效率问题所在
    3、“我们知道JAVA的Import是不存在效率问题”是胡说八道,只要有嵌入,就必然设计效率对于你最后一个问题,建议你认真阅读一下php的核心源码。在此,我不想误导您
      

  3.   

    JAVA import之后的代码会重新编译,引入一个和引入几个的效率是一样的。
      

  4.   


    每次...
    所以有一些扩展可以加速php
    例如 APC eAccelerator XCache 
      

  5.   

    opcode本身也可以缓存。
    另外,使用什么语言从来都不是网站的瓶颈。