Ben (biz dakika başına ~ 600 almak umuduyla), aynı anda birçok URL'leri bağlanan bir site üzerinde çalışıyorum ve ben deneyin ne olursa olsun, Time_Wait binlerce hala açık her zaman vardır. Ben bu TCP bağlantıları için hayati anlamak, ama hepsi mevcut portları kullanıyor. PHP SO_REUSEPORT yoktur ve SO_REUSEADDR uzaktan bağlantı ile çalışmıyor. İşte kod başlangıcı:
$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);
$ S bir dizi tüm bekleyen biz socket_shutdown dediğimiz bir yazılmasından sonra, yazar içerir gider ($ s, 1); soket üzerinde yazılı kapatın. Sonra okuduktan sonra biz:
socket_shutdown($s,2); socket_close($s);
Tüm okuma ve yazma bir süre döngü yapılır, döngü o vurmak değilse, o zaman üzerinde hareket eder ve diziye başka bir URL eklemek için ilerler, 12 eşzamanlı bağlantı bir max. Her döngü aramaları 0 bir zaman aşımı ile socket_select.
Herkes herhangi bir öneriniz var mı? Ben hızını artırmak hem de TIME_WAIT en netstat görünmesini azaltmak istiyorum.
Thanks, James Hartig