大佬教程收集整理的这篇文章主要介绍了关于PHP 7 refcount的困惑,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<?PHP $s = "foobar"; $t = $s; $u = $s; echo PHP_VERSION . "\n"; debug_zval_dump($s); xdebug_debug_zval('s');
在PHP 5.6.16中运行
在PHP 7.0.2中运行
我认为结果(PHP 7)应该是:
String(6) "foobar" refcount(4) s: (refcount=3,is_ref=0)="foobar"
我想知道是什么产生了影响?需要一些解释.非常感谢.
——更新——
Nikita Popov’s – PHP 7 – 内部发生了什么变化? (P41)
http://www.slideshare.net/nikita_ppv/php-7-what-changed-internally
有些类型从未被重新计算过.这些类型为null,bool,int和double.
还有其他类型总是被重新计算.这些是对象,资源和引用.
然后有类型,有时会被重新计算.那些是字符串和数组.
对于字符串,not-refcounted变体称为“interned String”.如果您正在使用NTS(非线程安全的)PHP 7构建(通常是这样),则代码中的所有字符串文字都将被实现.这些实习字符串经过重复数据删除(即只有一个具有特定内容的实习字符串)并且保证在请求的整个持续时间内存在,因此不需要对它们使用引用计数.如果使用opcache,这些字符串将存在于共享内存中,在这种情况下,您不能对它们使用引用计数(因为我们的引用计数机制是非原子的). Interned字符串的伪引用计数为1,这就是您在此处看到的内容.
对于数组,未引用的变量称为“不可变数组”.如果使用opcache,则代码中的常量数组文字将转换为不可变数组.再一次,这些生活在共享内存中,因此不得使用引用计数.不可变数组的伪引用数为2,因为它允许我们优化某些分离路径.
以上是大佬教程为你收集整理的关于PHP 7 refcount的困惑全部内容,希望文章能够帮你解决关于PHP 7 refcount的困惑所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。