or que uma função infinitamente recursiva no PHP causa um segfaul

Uma pergunta hipotética para todos vocês mastigar ...

ecentemente, respondi a outra pergunta sobre SO, em que um script PHP estava em falha, e isso me lembrou algo que sempre me perguntei; então, vamos ver se alguém pode esclarecer iss

Considere o seguinte

<?php

  function segfault ($i = 1) {
    echo "$i\n";
    segfault($i + 1);
  }

  segfault();

?>

Obviamente, essa função (inútil) faz loop infinitamente. E, eventualmente, ficará sem memória porque cada chamada para a função é executada antes que a anterior seja concluída. Mais ou menos como uma bomba de garfo sem o garf

Mas ... eventualmente, nas plataformas POSIX, o script morrerá com o SIGSEGV (ele também morre no Windows, mas com mais graça - até onde minhas habilidades de depuração de baixo nível extremamente limitadas podem dizer). O número de loops varia de acordo com a configuração do sistema (memória alocada para PHP, 32 bits / 64 bits, etc etc) e o sistema operacional, mas minha verdadeira pergunta é: por que isso acontece com um segfaul

É assim que o PHP lida com erros de "falta de memória"? Certamente deve haver uma maneira mais graciosa de lidar com isso? Isso é um bug no mecanismo do Zend? Existe alguma maneira de isso ser controlado ou tratado de maneira mais elegante a partir de um script PH Existe alguma configuração que geralmente controla esse número máximo de chamadas recursivas que podem ser feitas em uma funçã

questionAnswers(3)

yourAnswerToTheQuestion