サーバに接続しているすべてのクライアントにメッセージを送信しようとしています。私はループ内のセッションコードをチェックし続け、セッションコードが変更されたときには、ループは停止しません。これに関する解決策があれば感謝します。どうもありがとう。ここサーバ(PHPソケット)に接続しているすべてのクライアントにメッセージを送信できません
はここserver.phpという
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Server</title>
<link rel="stylesheet" href="../bootstrap-3.3.7/docs/dist/css/bootstrap.min.css">
<script src="../bootstrap-3.3.7/docs/assets/js/vendor/jquery.min.js"></script>
<script src="../bootstrap-3.3.7/docs/dist/js/bootstrap.min.js"></script>
</head>
<body>
<h1>Server</h1>
<button id="start_button" class="btn btn-primary" >Start Quiz</button>
<script type="text/javascript">
document.getElementById("start_button").addEventListener("click", write_to_all);
function write_to_all(){
$.ajax({
type: "GET",
url: "change_session.php" ,
});
}
</script>
<?php
$_SESSION['pass_start_quiz'] = "no";
$i=0;
$spawn = array();
error_reporting(0);
set_time_limit(0);
ob_implicit_flush(true);
$host = "127.0.0.1";
$port = 25011;
$start="no";
echo "Waiting for connections... \n";
ob_flush();
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
$result = socket_listen($socket) or die("Could not set up socket listener\n");
while(true){
$spawn[++$i] = socket_accept($socket) or die("Could not accept incoming connection\n");
echo "\n";
$input = socket_read($spawn[$i], 1024) or die("Could not read input\n");
if($input=='q'){break;}
$input = trim($input);
echo $input ."\n";
ob_flush();
$output = "hello client";
socket_write($spawn[$i], $output, strlen ($output)) or die("Could not write output\n");
ob_flush();
$start_quiz= $_SESSION["pass_start_quiz"];
echo $start_quiz;
if($start_quiz == "yes"){
echo $start_quiz;
$output = "start";
$arrlength = count($spawn);
echo $arrlength;
ob_flush();
for($x = 0; $x < $arrlength; $x++) {
socket_write($spawn[$x], $output, strlen ($output)) or die("Could not write output\n");
}
break;
}
}
socket_close($spawn);
socket_close($socket);
?>
</body>
</html>
あるclient.phpある
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Client</title>
<link rel="stylesheet" href="../bootstrap-3.3.7/docs/dist/css/bootstrap.min.css">
<script src="../bootstrap-3.3.7/docs/assets/js/vendor/jquery.min.js"></script>
<script src="../bootstrap-3.3.7/docs/dist/js/bootstrap.min.js"></script>
</head>
<body>
<form method="post" action="client.php">
<p><h4><label>Type Your Message Here:<input name = "message" size = "25" maxlength = "30" required></label></h4></p>
<input type="submit" name="sendmsg" class="btn btn-primary" value="send message"/>
</form>
<?php
ob_implicit_flush(true);
$user="abc";
if(empty($_POST)){
}
elseif(isset($_POST['sendmsg'])) {
$message =$_POST["message"];
$host = "127.0.0.1";
$port = 25011;
echo "Message To server :".$message;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
while(true){
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server :".$result;
ob_flush();
if($result == "start"){
echo "Quiz Started";
ob_flush();
break;
}
}
socket_close($socket);
}
?>
</body>
</html>
これは、あなたがあなたのループを設計しているように見えます
<?php
session_start();
$_SESSION['pass_start_quiz'] = "yes";
?>