php irc bot, эмуляция человека

Статус
В этой теме нельзя размещать новые ответы.

monomer

Новичок
php irc bot, эмуляция человека

Написал ппх бота, все работает.
Вопрос: как организовать задержку на ответы(эмуляцию, что сидит человек)?
Т.е. получаем сообщение от пользователя, составляем ответное сообщение, отсылаем его.
Нужно сделать задержку времени, что бы не сразу отсылали ответ, а скажем через 5сек.
Далее проблема, если назначить время тому сообщению, и каждый раз его проверять : т.е. если время подошло отправим. Так вот, если таким способом "задержку" сделать, тогда, если сообщений от сервера не будет, получится слишком большая задержка.
Подскажите какими способами можно решить эту проблемку, без sleep`а?
 

kode

never knows best
пхп не поддерживает многопоточность (с общей памятью)

-~{}~ 07.08.08 15:04:

можно конечно извратится, но другово более-менее возможного решения я в твоём случае не вижу

-~{}~ 07.08.08 15:05:

можешь конечно попробывать пропускать итерации "главного" цикла

-~{}~ 07.08.08 15:36:

и вобще зачем это надо? Али придумали бота который тест тьюринга проходит?

-~{}~ 07.08.08 15:45:

а правильным решением ИМХО будет форкатся
 

monomer

Новичок
Обнаружил такую штуку:
пишу текст боту, он его опознает, записывает ответ в очередь.
Далее такое развитие:
Если получаем сообщение от сервера, любое и время вышло, он его отправляет.
Если сообщений нет, ровно через 1 минуту он его выводит, при этом сообщений от сервера нет вообще никаких.
PHP:
while($bot->connect) {
 $data=$sayer->get_say_data();
 if($data) $bot->say($data['target'],$data['message']);
 $result=$bot->analyze(fgets($bot->connect));
 # далее обрабатываем данные...
 usleep(25000);
}
По идее не должен зависеть от сообщений с сервера, а отправить должен.
Делал подсчет итераций цикла их и не так много оказалось, почему???

-~{}~ 07.08.08 20:14:

Подскажите куда копать, что бы он цикл прокручивал, если сообщений от сервера нет?

-~{}~ 08.08.08 06:54:

все нашел решение: stream_set_blocking()
close theme
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху