IRC Php Bot - Грешка при вмъкване

Използвам 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?


person mike    schedule 05.05.2011    source източник


Отговори (1)


Да — while() цикъл.

Неограничената рекурсия от тази разновидност няма да работи ефективно в PHP, тъй като не елиминира крайните извиквания. Въпреки че можете да увеличите ограничението за влагане, в крайна сметка просто ще изгаряте все повече и повече памет, преди евентуално да се сринете.

person Community    schedule 05.05.2011