IRC Php Bot - Ошибка вложения - PullRequest
0 голосов
/ 05 мая 2011

Я использую SimplePhp IRC BOT , вы можете увидеть весь код прямо на странице.

Проблема, с которой я сталкиваюсь, заключается в том, что основная функция вызывает ее рекурсивно, поэтому после 100 вызовов она просто выдает ошибку, и я получаю эту ошибку:

Неустранимая ошибка: достигнут максимальный уровень вложенности функции «100», прерывание! в C: \ xampp \ xampp \ htdocs \ league \ bot.php в строке 106

Я вставлю некоторые из основных функций ниже:

 function main($config)
    {             
            $data = fgets($this->socket, 256);

            echo nl2br($data);

            flush();

            $this->ex = explode(' ', $data);


            if($this->ex[0] == 'PING')
            {
                    $this->send_data('PONG', $this->ex[1]); //Plays ping-pong with the server to stay connected.
            }

            $this->main($config);
     }

Есть ли способ достичь той же функциональности без рекурсивного вызова функции? Хорошо ли иметь этот уровень вложенности, и я должен просто увеличить предел вложенности xdebug?

1 Ответ

3 голосов
/ 05 мая 2011

Да - цикл while().

Неограниченная рекурсия этого разнообразия не будет эффективно работать в PHP, так как не устраняет хвостовые вызовы.Хотя вы можете увеличить лимит вложенности, вы в конечном итоге просто сожжете все больше и больше памяти, прежде чем в конечном итоге произойдет сбой.

...