while($data = fgets($ircSocket, 128))
Эта часть блокирует выполнение скрипта до тех пор, пока он не получит данные, и если каким-то образом вы не получаете данные через этот сокет ... ну, вы застряли там ... навсегда ... LOL хорошо, застрял до сценария PHP время ожидания.
Если эта часть не перехватывает, вы все еще застряли в цикле while, и поэтому нет никакого способа запустить часть кода, которая выводит информацию ... так что и apfelbox, и Alex верны, просто не объяснено полностью ...
Для того, чтобы иметь бесконечный цикл, а также иметь возможность запускать код снаружи, вам необходимо отловить «событие», в котором вы хотите захватить и запустить код. Все события, которые вы хотите захватить, должны находиться внутри цикла while или, по крайней мере, отправляться из цикла while в функцию, которая будет анализировать входные данные с сервера и правильно реагировать.
Еще лучший способ сделать это - использовать шаблон наблюдателя.
Я бы на самом деле не сделал IRC-бота с PHP, даже если вы запускаете его через командную строку ... PHP не предназначен для запуска в качестве приложения, работающего долго.