no no 智商只有129eaccelerator_put()这个函数可以把变量存在共享内存里,不是session,他是整站全局的,所以class只要实例化一次就行了,当然要处理特殊情况,服务器重启,这种情况要重新new再put"静态的东西是全局唯一的" 变量也是全局唯一的吧? 既然类里有静态和非静态,就有性能和适用之分
遇到问题了: 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只用来存个数组就行了,至于类和对象变量,也许只能“一次请求一枯荣”了
既然类里有静态和非静态,就有性能和适用之分
1 静态变量和普通变量在效率方面有什么差别?什么情况下用静态变量
2 静态函数 ... 同上
3 self::$foo和$this->foo分别在什么情况下使用比较合适?
4 self::foo()和$this->foo() ... 同上
=================================================================================
类中的静态变量以及静态成员函数属于类本身.
当然可以使用静态调用,就用静态调用,无需重新分配内存,效率能不高么?:-).'实例化'点来说,当类中的变量设为静态变量时(static $a),此变量是属于类本身的,不属于类的实例化,也就是说只能通过类本身来访问此变量(self::$a),而不能通过实例化方式访问($this->a).而成员函数一旦设为静态(static function x()),则此函数只能对类的静态变量进行访问,操作,从而实现了静态函数只关联类本身,而不关联类的实例化.至于什么时候用静态,什么时候用动态,则须视类的功能而定.个人意见,不妥望较正. :-)
那样,做下载站的话就爽了,把文件弄到内存里,假设网站只有10个10M的软件,用100M内存就够了
如果有1000人同时下载,不必在乎它需要 1000 * 10M 的内存,在乎的是带宽……:)
也可以采用整网一个入口的方式,尽量降低磁盘io
当然就目前来开,系统的瓶颈不出在磁盘上,主要还是在数据库,所以对发超大流量网站一般使用文件缓存,如果采用缓存机制,那么只要有大内存就可以解决很多问题以上都处在设计阶段,有待实践检测
内存表非常快的,但就是不能全文检索,不能有 auto_increment 字段
内存表数据都存放在内存里,表结构在硬盘上,重起服务器后,表就为空了
速度嘛,你可以自己测试一翻
相应的要改一些 mysql.cnf 里的参数使内存表能放多一些的数据:tmp_table_size =
max_tmp_tables =
max_heap_table_size =按照需求改吧
楼主好好看看OOP的概念吧。
它的对象有许多特殊性,不能用传统的oop来看待
比如php执行一次,如果源码里面没有class就不能用::,因为class不存在于程序,它是单一的面向一次请求的,不象windows,它甚至没有一个面向所有请求的基类多么希望php能快点发展,可是继续发展下去很可能就成java了...
我觉得肯定还是需要的,这也是一个必然的趋势。
我也是因为工作需要,刚从.net转向PHP。很多地方也是在摸索,希望以后有更多交流机会。
现在我想的是如何把类就像实例化后的变量一样放到内存里,不知道除了eval还有没有别的办法?
保存定义类的字符串合算还是保存对象变量合算?
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只用来存个数组就行了,至于类和对象变量,也许只能“一次请求一枯荣”了