首页 / PHP / PHP:执行模型和内存模型
PHP:执行模型和内存模型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP:执行模型和内存模型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1686字,纯文字阅读大概需要3分钟。
内容图文
![PHP:执行模型和内存模型](/upload/InfoBanner/zyjiaocheng/193/21772db1ae72486eabfe8bb88a1b2150.jpg)
对于任何一种语言,了解其执行模型和内存模型都是有意义的,本文中的内容不见得正确,请多批评。
执行模型每个请求都是一个独立的PHP进程,两个请求之间会完全隔离,会话和Cookie是通过其他机制在多个请求之间实现数据共享,像静态变量和全局属性这些会在每个请求中重新初始化。
示例
1 ';6 ?>
结果
2 //无论刷新多少次请求,结果都是2。内存模型 基本规则
以下是PHP的内存管理规则:
默认按值传递。 必须显式的声明按引用传递。 对象类型的值是对象的地址。
1 $symbol = value;
其中:symbo是符号,存放在符号表中(全局符号表或活动符号表),value是符号引用的值。
1 $symbol_ref = &$symbol;
其中:symbo_ref和symbo会l引用同一个值。
第一个小测试代码
1 "10 11 ?>
结果
1 var_a:2, var_b:1, var_c:2, var_d:1, var_e:2
内存变化
第一步
第二步
第三步
第四步
第五步
第六步
第二个小测试代码
1 value = $value; 7 } 8 9 function getValue() {10 return $this->value; 11 }12 }13 14 $var_obj = new TestClass();15 $var_obj_copy = $var_obj;16 $var_obj_ref = &$var_obj;17 18 $var_obj_ref->setValue(2);19 20 echo $var_obj->getValue().'
';21 echo $var_obj_copy->getValue().'
';22 echo $var_obj_ref->getValue().'
';23 ?>
结果
1 //输出结果2 3 24 25 2
内存变化
第一步
第二步
第三步
第四步
备注真正的PHP内存不是上面那样,但是语义上和上面描述的没有区别,PHP为了优化内存做了一些额外的工作。
PHP为了提高内存利用效率,并不是在赋值给符号的时候立即按值拷贝的,每个值都维护了一个引用计数(被多少个符号引用了),在某些合适的时刻会自动拷贝,不过这些时刻对于开发人员是透明的,可以不用考虑。
有感兴趣的朋友,可以参考这篇文章:http://www.laruence.com/2008/09/19/520.html。
内容总结
以上是互联网集市为您收集整理的PHP:执行模型和内存模型全部内容,希望文章能够帮你解决PHP:执行模型和内存模型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。