Вот код: PHP: <?php set_time_limit(0); $irc["server"] = "irc.server.com"; $irc["port"] = "6667"; $irc["channel"] = "#chat"; $irc["act"] = "5"; $bot["good"] = "connect"; $bot["user"] = "USER test"; $fsock = fsockopen($irc["server"], $irc["port"]); $no_connect = 1; { $str = fread($fsock, 1024); } { $str = fread($fsock, 1024); } fwrite($fsock,"" .$bot["good"].$bot["user"]."\r\n"); { $str = fread($fsock, 1024); $str = fread($fsock, 1024); } fwrite($fsock, "JOIN ".$irc["channel"]."\r\n"); fwrite($fsock, "ACTION ".$irc["act"]."\r\n"); while (1) { if ($str = fread($fsock, 1024)) { fwrite($fsock, "PONG ".$irc["channel"]."\r\n"); } elseif (stristr($str,"PONG") && $no_connect == 1) { if (substr($str, 0, 6) == "PING :") unset($no_connect); fwrite($fsock, "PING ".time()."\r\n"); while (!substr($str, 0, 4) == "PONG") { $str = fread($fsock, 1024); } } } sleep(0); fclose($fsock); ?> Сам-то код написан верно, но вот даны строки: PHP: fwrite($fsock, "JOIN ".$irc["channel"]."\r\n"); fwrite($fsock, "ACTION ".$irc["act"]."\r\n"); Эти строки посылают на сервер следующее: JOIN #chat ACTION 5 Как сделать, чтобы команда "ACTION ..." отправлялась на сервер через 3 секунды после JOIN
kravch_v да, между ними Вообще, ваш код будет ломаться еще во многих самых неожиданных местах. Рекомендую сейчас собраться с духом и переписать используя select'ы и очередь сообщений. http://php.net/socket_select Ну а очередь можно реализовать на массиве, правда придется его сортировать постоянно. Тогда добавление новых команд и реакций можно будет делать безболезненно и красиво
Gifts и |qbz| - Спасибо! Значит в ближайшие дни полностью перепишу скрипт. Надеюсь, что всё получится.
kravch_v, немного замечу по IRC-логике скрипта: Насколько я вижу, в приведенном коде отсутствуют команды IRC, требуемые согласно RFC1459, а именно - не посылается ник (NICK somenick). Странным образом отправляется команда USER, также отправляется несуществующая команда ACTION. Подозрительно реализован PING-PONG. Не уверен, что такой IRC-клиент способен работать с известными IRCd.