生成器函数在 PHP 中不工作并导致无限循环
Generator function not working in PHP and results in an infinite loop
我复制了PHP手册的代码:
http://php.net/manual/en/language.generators.syntax.php#example-295
function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
// Note that $i is preserved between yields.
yield $i;
}
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
但是当我在浏览器中 运行 这段代码时,它会导致无限循环:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 ... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 448 bytes)
在 xdebug 通知我脚本的内存已经耗尽之前。
我在 MAMP 上安装了 PHP 5.6.2,为什么我会遇到这个错误?
我发现了这个问题,因为所有像我一样的人都在使用 PHP AOP 扩展 https://github.com/AOP-PHP/AOP:
发电机无法工作,我已经在 GitHub https://github.com/AOP-PHP/AOP/issues/93
上打开了一个问题
在我的 php.ini
中,我更改了这个:
extension=aop.so
为此:
;extension=aop.so
重新启动 Apache,现在一切都如手册所述完美运行。所以我猜扩展有一个错误。
我复制了PHP手册的代码:
http://php.net/manual/en/language.generators.syntax.php#example-295
function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
// Note that $i is preserved between yields.
yield $i;
}
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
但是当我在浏览器中 运行 这段代码时,它会导致无限循环:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 448 bytes)
在 xdebug 通知我脚本的内存已经耗尽之前。
我在 MAMP 上安装了 PHP 5.6.2,为什么我会遇到这个错误?
我发现了这个问题,因为所有像我一样的人都在使用 PHP AOP 扩展 https://github.com/AOP-PHP/AOP:
发电机无法工作,我已经在 GitHub https://github.com/AOP-PHP/AOP/issues/93
上打开了一个问题在我的 php.ini
中,我更改了这个:
extension=aop.so
为此:
;extension=aop.so
重新启动 Apache,现在一切都如手册所述完美运行。所以我猜扩展有一个错误。