Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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套接字客户端在循环中的itertion_Php_Sockets_Loops - Fatal编程技术网

PHP套接字客户端在循环中的itertion

PHP套接字客户端在循环中的itertion,php,sockets,loops,Php,Sockets,Loops,我想在PHP中实现一个客户端套接字 套接字类型为TCP/IP,运行全双工通道。 客户端必须每秒向服务器发送一次请求,因此必须在循环中运行 我是否必须为每个请求重新创建并连接到套接字? 还是通过循环创建并连接到外部的套接字,然后管理通信更好 <?php while (true) { //management of the pid here //create the socket   $socket = socket_create (AF_INET, SO

我想在PHP中实现一个客户端套接字

套接字类型为TCP/IP,运行全双工通道。 客户端必须每秒向服务器发送一次请求,因此必须在循环中运行

我是否必须为每个请求重新创建并连接到套接字? 还是通过循环创建并连接到外部的套接字,然后管理通信更好

<?php
   while (true) {
      //management of the pid here
      //create the socket
      $socket = socket_create (AF_INET, SOCK_STREAM, 0);
      //send the request
      $sent = socket_write ($socket, <query>, <length>);
      //get the answer
      $response = socket_read ($socket, 1024);
      //close the socket
      socket_shutdown ($socket, 2);
      usleep (500);/ / wait remote host
      socket_close ($socket);
      sleep (1);
   }
?>
我已经在循环外部实现了套接字连接,在循环内部实现了请求管理

但是连接保持活动状态几分钟,然后在端点连接上返回错误

在这种情况下是否有必要使用socket_bind


谢谢。

您应该在循环外部连接一次套接字,然后在整个应用程序会话中使用它。循环完成后断开套接字。

创建套接字会消耗大量资源,由于您没有连接到多个点,因此应在循环外部创建套接字。

问题是循环必须始终保持活动状态。在端点返回一个while错误后,我必须为持久连接使用特定的选项。处理重新连接的最佳方法是什么?谢谢如果您遇到错误,请退出循环,重新连接,然后返回到循环中?非常感谢Socket_bind通常只用于服务器。客户端使用套接字连接。