gpt4 book ai didi

php - PHP socket 和同时

转载 作者:行者123 更新时间:2023-12-03 11:55:52 26 4
gpt4 key购买 nike

我正在学习并试图了解php中的套接字,但是while循环有一些问题。

这是我的基本代码:

客户端

<?php
set_time_limit(0);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$res = socket_connect($socket, '127.0.0.1', 2000);

$input = "Client to Server Message";

socket_write($socket, $input, strlen($input));
$res = socket_read($socket, 1024);

echo $res;

socket_close($socket);
?>

和服务器端
<?php
set_time_limit(0);

$address = "127.0.0.1";
$port = 2000;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($socket, $address, $port) or die("Can't bind the socket");

socket_listen($socket);

echo "Server waiting connexion...";

$client = socket_accept($socket);

$input = socket_read($client, 1024);

echo "\nInput : ".$input;

$output = 'Server to Client Message';

socket_write($client, $output);

socket_close($client);
socket_close($socket);

echo "\nServer closed";
?>

它可以正常工作,但是如果我想在服务器端添加一个while循环来处理来自客户端的多条消息,我的浏览器会进行无限循环,而我无法从服务器取回消息。

我必须怎么做才能使它起作用?

有人可以向我解释使用套接字 和PHP仅(我可以通过socket.io和NodeJs做到这一点)进行类似聊天的基本方法,或者可以将我发送到网上的优质教程吗?

最佳答案

我认为您走错了路。

您编写了两个小的php脚本,其中服务器端不仅是在网络服务器上运行的脚本,而且已经是服务器。虽然您的客户端就像浏览器一样(有点基本)。
如此直截了当,您编写了一个聊天应用程序和一个聊天服务器,但没有编写网站。

意味着您应该将两个脚本都作为控制台脚本来运行。
在Linux上,您具有“php”命令。在Windows上阅读此http://php.net/manual/de/install.windows.commandline.php

如果您只想进行简单的聊天,请使用以下命令:

<!-- html stuff -->
<pre>
<?php
//chat.php

// Safe message on server using file
if(isset($_GET['msg'])){
// be carefull it's not clever to let the world write
// to your server even if it's a textfile
$f = fopen("db.txt","a+");
fputs($f, $_GET['msg']);
fclose($f);
}

// print all messages
readfile("db.txt");

?>
</pre>
<form>
<textarea name="msg"></textarea>
<input type="submit"/>
</form>

对于更多的聊天感觉,这意味着不需要重新加载页面,您需要Javascript和AJAX请求。在这里看 http://www.w3schools.com/php/php_ajax_php.asp

问题是我发现并使用过的聊天的所有很好的教程,通常也使用mysql数据库。

关于php - PHP socket 和同时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com