PHP挂起的生成器函数是否需要花费资源?
我写了一个这样的缓存持有者:PHP挂起的生成器函数是否需要花费资源?,php,generator,Php,Generator,我写了一个这样的缓存持有者: <?php function expensive() { sleep(3);
<?php
function expensive() {
sleep(3);
yield "expensive result";
}
$container = [];
function cache_holder($key, $data) {
global $container;
if (!isset($container[$key])) {
$container[$key] = $data->current();
}
return $container[$key];
}
// run
$start = microtime(true);
$first_fetch = cache_holder('foo', expensive());
echo $first_fetch, "\n";
$end_first = microtime(true);
printf("elapsed time: %.2f ms \n", ($end_first - $start) * 1000);
$second_fetch = cache_holder('foo', expensive());
echo $second_fetch, "\n";
$end_second = microtime(true);
printf("elapsed time: %.2f ms \n", ($end_second - $end_first) * 1000);
它们应该占用它们所持有的所有变量的内存,但实际上除此之外没有其他开销。我不知道它们是如何实现的,但这似乎是一个常识案例。