gpt4 book ai didi

php - PHP 套接字中的错误?它不遵守超时

转载 作者:可可西里 更新时间:2023-11-01 02:51:00 24 4
gpt4 key购买 nike

我启动了以下服务器:

<?php

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

socket_bind($socket, 'localhost', 9000) or die("Failed: socket_bind()");
socket_listen($socket, 20) or die("Failed: socket_listen()");

$client = socket_accept($socket);

socket_set_option($client, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0));
socket_set_option($client, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>1, 'usec'=>0));

while(1) {
$read = array($client);
$write = $except = null;
socket_select($read,$write,$except,1);
}

当我尝试使用 telnet localhost 9000 连接到此服务器时,它不会在一秒钟后退出,尽管我已设置 1 秒超时。

Linux 上的 PHP 7.0.11。 FreeBSD 上的 PHP 5.6.21 也有类似的问题

为什么不起作用?

注意:在这个例子中,我尝试减少超时。在我的实际问题中,我需要将它增加到几个小时或几天。

最佳答案

它没有理由退出。据我了解您的代码:

  • 您正在为读取和写入操作设置超时,但您没有在显示的代码中执行任何读取或写入操作。
  • 您调用 select 的超时值为 1,一旦 select 完成,您将在无限循环中再次调用它等。

关于php - PHP 套接字中的错误?它不遵守超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141592/

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