eaccelerator能缓存对象变量?你确定?那所有变量不全成了session了。

解决方案 »

  1.   

    据我所知安装eaccelerator不需要重写程序。所以你所说的前提不成立。eaccelerator仅缓存php代码,不缓存任何变量和实例。你装不装eaccelerator,转oop都一样的。
      

  2.   

    no no 智商只有129eaccelerator_put()这个函数可以把变量存在共享内存里,不是session,他是整站全局的,所以class只要实例化一次就行了,当然要处理特殊情况,服务器重启,这种情况要重新new再put"静态的东西是全局唯一的" 变量也是全局唯一的吧?
    既然类里有静态和非静态,就有性能和适用之分
      

  3.   


    1 静态变量和普通变量在效率方面有什么差别?什么情况下用静态变量
    2 静态函数 ... 同上
    3 self::$foo和$this->foo分别在什么情况下使用比较合适?
    4 self::foo()和$this->foo() ... 同上
    =================================================================================
    类中的静态变量以及静态成员函数属于类本身.
    当然可以使用静态调用,就用静态调用,无需重新分配内存,效率能不高么?:-).'实例化'点来说,当类中的变量设为静态变量时(static $a),此变量是属于类本身的,不属于类的实例化,也就是说只能通过类本身来访问此变量(self::$a),而不能通过实例化方式访问($this->a).而成员函数一旦设为静态(static function x()),则此函数只能对类的静态变量进行访问,操作,从而实现了静态函数只关联类本身,而不关联类的实例化.至于什么时候用静态,什么时候用动态,则须视类的功能而定.个人意见,不妥望较正. :-)
      

  4.   

    eaccelerator 这东西能缓存变量?不会是像 memcache 一样吧,只是把变量缓存了,但每一个程序要想使用变量必须取回来,另开辟一段内存处理变量,然后在存回去……要是真能把变量共享了,就好了;
    那样,做下载站的话就爽了,把文件弄到内存里,假设网站只有10个10M的软件,用100M内存就够了
    如果有1000人同时下载,不必在乎它需要 1000 * 10M 的内存,在乎的是带宽……:)
      

  5.   

    eaccelerator就是memcache的作者写的。人被zend挖走了改名叫eaccelerator
      

  6.   

    应该不是变量共享,就是把变量存在了内存里而不是文件里,速度应该比文件快。这是php得运行方式决定得关于::和->的用法基本有点眉目了,实例化以后才能存到eacc里,所以::应该很少用到了,因为类不在程序里,尽量避免的就是每次都include一大堆文件,eacc实现的就是对象变量来自共享内存,所以减少了每个页面的大小
    也可以采用整网一个入口的方式,尽量降低磁盘io
    当然就目前来开,系统的瓶颈不出在磁盘上,主要还是在数据库,所以对发超大流量网站一般使用文件缓存,如果采用缓存机制,那么只要有大内存就可以解决很多问题以上都处在设计阶段,有待实践检测
      

  7.   

    如果数据表结构简单的话,MySQL里放两份,一份正常的,另一份用内存表
    内存表非常快的,但就是不能全文检索,不能有 auto_increment 字段
      

  8.   

    学习了....self::$foo 肯定是不需要再分配内存了,应该比$this->foo快
      

  9.   

    请教Mistruster(弱智d) ,mysql中建立一个内存表,这个表建立之后怎么使用他?能体现他的速度快?建立的时候要注意哪些事情,谢谢。
      

  10.   

    Create 表时指定 type=heap 就是内存表了;
    内存表数据都存放在内存里,表结构在硬盘上,重起服务器后,表就为空了
    速度嘛,你可以自己测试一翻
    相应的要改一些 mysql.cnf 里的参数使内存表能放多一些的数据:tmp_table_size =
    max_tmp_tables =
    max_heap_table_size =按照需求改吧
      

  11.   

    感觉php对象机制还不是完全成熟,跟其它语言比要差好多.
      

  12.   

    我觉得解释这类问题,应该从OOP的本身出发。用OOP的思想来思考问题,这些东西就会迎刃而解。
    楼主好好看看OOP的概念吧。
      

  13.   

    oop概念很清楚,壳如今面对的是php的特殊情况,php不同于java也不同于c++,应用程序
    它的对象有许多特殊性,不能用传统的oop来看待
    比如php执行一次,如果源码里面没有class就不能用::,因为class不存在于程序,它是单一的面向一次请求的,不象windows,它甚至没有一个面向所有请求的基类多么希望php能快点发展,可是继续发展下去很可能就成java了...
      

  14.   

    你说的这个确实是问题,所有一直有人在争论PHP到底需不需要OOP.
    我觉得肯定还是需要的,这也是一个必然的趋势。
    我也是因为工作需要,刚从.net转向PHP。很多地方也是在摸索,希望以后有更多交流机会。
      

  15.   

    面向对象的确是需要,只用函数的话一些变量不能跨函数,必须是全局变量,而很多时候实现一小部分不需要那么多全局变量。class实现了对内部变量和函数的封装,可以让变量变成局部的全局变量,还有别的好处需要慢慢体会以前我反对oop是因为它每次都要include class文件,每次请求都要new,这失去了oop的优点
    现在我想的是如何把类就像实例化后的变量一样放到内存里,不知道除了eval还有没有别的办法?
    保存定义类的字符串合算还是保存对象变量合算?
      

  16.   

    遇到问题了:
    php5的对象机制中,对象变量里是不包含方法的,如果程序里只有对象变量而没有类的定义,那么不能调用方法和属性,出错提示如下
    The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "test" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition
    对象在unserialize()之前,类必须定义现在得想个办法把类的定义序列化,这样的话复杂度就要超过include了,或者干脆用include这样看来当初的想法是错误的,除非php提供更方便存储处理类和变量的方法,否则oop 想说爱你不容易
    如果把类定义变成字符串再eval 也是一种办法,但总感觉不是那么流畅;或许,eacc只用来存个数组就行了,至于类和对象变量,也许只能“一次请求一枯荣”了