[英]How can I break this PHP while loop?
我是 PHP 新手,正在開發一個加入頻道、發送消息然后退出的 IRC 機器人。
除了發送 $message 之后(第 6 行),腳本中的所有內容都在運行,我不明白如何退出無限循環。
// Open Internet connection
$socket = fsockopen("$server", $port);
fputs($socket,"USER $nick $nick $nick $nick :$nick\n");
fputs($socket,"NICK $nick\n");
fputs($socket,"JOIN ".$chan."\n");
fputs($socket, "PRIVMSG ".$chan." :$message1\n");
// Begin while loop
while(1) {
while($data = fgets($socket)) {
echo nl2br($data);
flush();
$ex = explode(' ', $data);
$channel = $ex[2];
$nicka = explode('@', $ex[0]);
$nickb = explode('!', $nicka[0]);
$nickc = explode(':', $nickb[0]);
// $host = $nicka[1];
$nick = $nickc[1];
if($ex == "PING"){
fputs($socket, "PONG ".$ex[1]."\n");
}
$args = NULL; for ($i = 4; $i < count($ex); $i++) { $args .= $ex[$i] . ' '; }
}
}
您只需要 1 個 while 循環,當條件為真時就會停止。
你可以閱讀http://php.net/manual/en/control-structures.while.php
while(1) { // <-- Remove the infinite loop
while($data = fgets($socket)) {
如果您必須讓套接字保持打開狀態,則需要一段時間。 解決此問題的最佳方法是使用回調。 但如果你只想打破時間。
// Open Internet connection
$socket = fsockopen("$server", $port);
fputs($socket,"USER $nick $nick $nick $nick :$nick\n");
fputs($socket,"NICK $nick\n");
fputs($socket,"JOIN ".$chan."\n");
fputs($socket, "PRIVMSG ".$chan." :$message1\n");
// Begin while loop
all_data_received = False
while(1) {
while($data = fgets($socket)) {
echo nl2br($data);
flush();
$ex = explode(' ', $data);
$channel = $ex[2];
$nicka = explode('@', $ex[0]);
$nickb = explode('!', $nicka[0]);
$nickc = explode(':', $nickb[0]);
// $host = $nicka[1];
$nick = $nickc[1];
if($ex == "PING"){
fputs($socket, "PONG ".$ex[1]."\n");
}
$args = NULL; for ($i = 4; $i < count($ex); $i++) { $args .= $ex[$i] . ' ';
all_data_received = True //or some other conditions
}
if (all_data_received == True){
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.