«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2017/04/21 18:48:04  №977418 1
Чому этот код вешает мне браузер?
$newPow = function($b, $e) use (&$newPow){
if($e){

return $b * $newPow($b, $e);
} else {
return ;
}
};
echo $newPow(4, 4);
Ответы: >>977444 >>977446
Аноним 2017/04/21 20:07:14  №977444 2
>>977418

Браузер он вряд ли может подвесить, скорее сервер. Попробуй поставить там echo внутри функции и выводить, с какими аргументами она вызвана.

Возможно что у тебя тут получается бесконечная рекурсия. Тогда PHP будет выполнять скрипт, пока не закончится память. Но в современных ОС используется swap, и прежде чем PHP умрет, он загоняет остальные программы в своп, что и создает ощущение что все тормозит.

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%BA%D0%B0%D1%87%D0%BA%D0%B0_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86

Как с этим бороться? Проверь такие настройки с помощью phpinfo():

- max_execution_time - ограничение на время выполнения
- memory_limit - ограничение на потребление памяти

Если у тебя установлен xdebug то доступна настройка xdebug.max_nesting_level ограничивающая глубину рекурсии. https://xdebug.org/docs/basic