いくつかのチュートリアルに従ってボットをゼロから作成すると、基本的な機能は正常に機能し、接続でき、コマンドに応答し、Web ページに出力されます。
私が欲しいのは、curl を使用して Web サイトから取得しているチャネルに更新を含むメッセージを定期的に送信することです。
$irc と $curl は設定を含む単なる配列であり、date('s') は更新を返す関数と言えます。もちろん、そのためにカール機能が働いています。$irc['delay'] は 10 に設定されているため、sleep(1) では 10 秒ごとに更新を送信する必要があります。
問題は、最初の 1 分間ほど、現在の秒数を 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 が
断りなく提案したように、日付を 1 回言うと、次のレポートまで少なくとも 1 分かかります。私が何かコマンドを言うと、それはさらに遅れます。
10:39 モニナル 来ました
10:39 モニナル 39:24
10:40 モニナル 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 モニナル 42:51
2 番目のメッセージを送信した後、初めて Web ページに出力が表示され、次のレポートはすべて 10 秒ではなく 61 秒ごとに送信されます。
10:42 モニナル 42:51
10:43 モニナル 43:52
10:44 モニナル 44:53
多分それは私のサーバー設定に何かありますか?