PHP中内核的COW机制

KarlXu 2017-05-08 11:20:54原创浏览量1163
//声明一个变量$a
$a = array_fill(0, 100, 'php');

//将$a赋值给$b
$b = $a;

此时内存空间里面并不会有2个变量,因为php有个机制叫COW(Copy On Write)只有在写(修改数据)的时候才会复制一份到内存中

所以此时$a与$b在内存中是指向同一个地方

$j = 0;
foreach ($b as $key => $val){
  $j++;
}

即使我们循环遍历了,只要没有修改操作,那么$a和$b还是指向同一块内存

$b[3] = 'new_php';

当$b的值发生改变时,php(内核)将重新申请一块内存空间,然后进行赋值


有问题请Email联系: karlxu0424@gmail.com