我按照一些教程从头开始创建机器人,基本功能工作正常,比如我可以连接,它响应命令,并将输出输出到网页。
我想要的是定期向频道发送消息,这些消息是我从某个带有 curl 的网站获得的。
$irc 和 $curl 只是带有设置的数组,而 date('s') 可以说是返回更新的函数。当然,我有为此工作的 curl 功能。$irc['delay'] 设置为 10,因此使用 sleep(1) 它应该每 10 秒发送一次更新。
问题是在第一分钟左右,它每 10 秒发送一次当前秒数,但它不听我设置的任何命令。它在第一个初始延迟之后执行命令,我不是它来自的地方
然后它仅在有人在频道上讲话时才向当前秒数(if 条件)发送消息。我猜它在等待这 128 个字节?但它确实会立即听命令。
while(1) {
while($data = fgets($socket, 128)) {
echo nl2br($data);
flush();
if ($curl['delay'] <= $d) { fputs($socket, "PRIVMSG ".$irc['channel']." :".date('s')."\n"); $d=0; };
$d+=1;
sleep(1);
$ex = explode(' ', $data);
if($ex[0] == "PING") fputs($socket, "PONG ".$ex[1]."\n");
$command = str_replace(array(chr(10), chr(13)), '', $ex[3]);
switch ($command) {
case ":!say" : fputs($socket, "PRIVMSG ".$ex[2]." :Hello!\n"); break;
case ":!off" : break 3;
};
};
}
好吧,我希望它既响应命令,又定期自动发送消息提取数据。但我不明白它的行为,甚至不知道我想要什么是可能的 php
就像 Ranty 建议的那样
:它会说一次日期,然后下一次报告至少需要一分钟。如果我说任何命令,它会进一步延迟它。
10:39 Moninal 我来了
10:39 Moninal 39:24
10:40 Moninal 40:26
10:41 Moninal 我来了
10:41 Moninal 41:05
10:41 Gregos !sayit
10:41 Moninal 你好!
10:41 Gregos !sayit
10:41 Moninal 你好!
10:42 Moninal 42:51
在它发送第二条消息后,我第一次在网页上得到输出,下一个报告每 61 秒发送一次,而不是 10 秒。
10:42 莫纳尔 42:51
10:43 莫纳尔 43:52
10:44 莫纳尔 44:53
也许这与我的服务器配置有关?