Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP WebSocket中重用地址和端口_Php_Sockets_Websocket - Fatal编程技术网

在PHP WebSocket中重用地址和端口

在PHP WebSocket中重用地址和端口,php,sockets,websocket,Php,Sockets,Websocket,我正在为聊天系统实现WebSocket。server.php是通过ssh调用的,带有php/www/server.php,第一次执行时,它运行良好;但如果进程停止(ctrl+z),则在再次尝试调用php/www/server.php后会显示此错误: Warning: socket_bind(): unable to bind address [48]: Address already in use in /www/server.php 以下是/www/server.php文件的内容: <

我正在为聊天系统实现WebSocket。server.php是通过ssh调用的,带有
php/www/server.php
,第一次执行时,它运行良好;但如果进程停止(ctrl+z),则在再次尝试调用
php/www/server.php
后会显示此错误:

Warning: socket_bind(): unable to bind address [48]: Address already in use in /www/server.php
以下是/www/server.php文件的内容:

<?
$host = '10.10.0.103';
$port = '1337';

//Create TCP/IP sream socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

//reuseable port
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

//bind socket to specified host
socket_bind($socket, 0, $port);

//listen to port
socket_listen($socket);

// ... etc

已停止
如挂起,例如,您在php进程中按ctrl-z键?这并不会关闭进程,您在其中建立的任何绑定都将仍然有效。但是如果我挂起该进程,客户端将无法再连接到websocket服务器,这就是我认为它已停止的原因。是的,因为本应处理其余连接协商的进程已停止,因此无法建立连接。但这并不意味着插座被释放了。它还在使用中。就像“嘿,这个冻僵的穴居人没跟我说话”。嗯,是的。。。他冻僵了,我明白。然后,我需要更好地理解问题2:如何运行该进程(同时允许我关闭终端窗口),以及如何在对server.php进行更改后真正停止(或重新启动)该进程?杀死它。e、 g.
kill-9pid\u of_php\u进程
,或按住ctrl-c键并再次启动脚本
/php server\u script.php
。使用ctrl-z挂起不会终止作业,它只是冻结作业,这样就不会再执行代码。但是挂起不会释放进程正在使用的任何资源。文件保持打开状态,套接字保持绑定状态,内存消耗等。。。