我想知道如何在socket_read通话中设置超时?它第一次调用时socket_read,它等待直到发送数据,如果在5秒内没有发送数据,我想关闭连接.任何帮助?我已经尝试SO_RCVTIMEO过没有运气了.
我正在创建一个套接字socket_create()并用它来监听连接,然后在连接时我会监听数据,然后用它做一些事情.超时命中时,我想运行socket_shutdown()然后socket_close().
我想知道InnoDB是否是格式化表格的最佳方式?该表包含一个字段,主键,该表每天将获得816k行(est.).这将变得非常快!我正在研究文件存储方式(这会更快)吗?该表将存储已经处理过的Twitter ID的ID号?
还有,SELECT min('id')声明中估计的内存使用量是多少?非常感谢任何其他想法!
我正在开发一个可以同时连接到多个URL的站点(我们希望每分钟达到600个),无论我尝试什么,总有数千个TIME_WAIT仍然打开.我知道这些对于TCP连接至关重要,但它们正在使用所有可用的端口.PHP没有SO_REUSEPORT,SO_REUSEADDR不适用于远程连接.这是代码的开头:
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($s, SOL_SOCKET, SO_LINGER,array('l_linger'=>0, 'l_onoff'=>0)); //I have tried l_onoff=1
socket_set_option($s, SOL_SOCKET, SO_RCVTIMEO,array('sec'=>0,'usec'=>500000));
socket_set_option($s, SOL_SOCKET, SO_SNDTIMEO,array('sec'=>0,'usec'=>500000));
socket_set_option($s, SOL_SOCKET, SO_KEEPALIVE,0);
socket_set_option($s, SOL_SOCKET, SO_REUSEADDR,1);
socket_set_nonblock($s);
socket_bind($s,$ip,0);
socket_connect($s,$host,$port);
Run Code Online (Sandbox Code Playgroud)
$ s进入一个包含所有挂起写入的数组,在写入后我们调用socket_shutdown($ s,1); 关闭套接字上的写入.然后读完后我们:
socket_shutdown($s,2); socket_close($s);
Run Code Online (Sandbox Code Playgroud)
所有读取和写入都是在while循环中完成的,循环最多有12个并发连接,如果没有命中,则继续进行并继续向数组添加另一个URL.每个循环调用socket_select,超时为0.
有没有人有什么建议?我想提高速度并减少netstat中出现的TIME_WAIT.
谢谢James Hartig