मैं एक साइट एक बार में कई यूआरएल से कनेक्ट होता है पर काम कर रहा हूँ और कोई फर्क नहीं पड़ता कि मैं क्या प्रयास करें (हम प्रति मिनट ~ 600 को पाने के लिए उम्मीद कर रहे हैं), वहाँ हमेशा के हजारों रहे हैं TIME_WAIT अभी भी खुला है। मैं समझता हूं कि ये टीसीपी कनेक्शन के लिए महत्वपूर्ण हैं, लेकिन वे सभी उपलब्ध बंदरगाहों का उपयोग कर रहे हैं। 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);
$ s एक सरणी में चला जाता है सभी लंबित लिखते हैं, एक लिखने socket_shutdown हम फोन के बाद ($ s 1) शामिल हैं; सॉकेट पर लिखना बंद करने के लिए। फिर एक पढ़ने के बाद हम:
socket_shutdown($s,2); socket_close($s);
सभी पढ़ने और लिखने थोड़ी देर के पाश में किया जाता है, पाश 12 समवर्ती कनेक्शन की एक अधिकतम है, कि अगर हिट नहीं है, तो उस पर ले जाता है और दूसरा URL जोड़ने के लिए आगे बढ़ता सरणी के लिए। हर पाश कॉल 0.
का समय समाप्त साथ socket_select किसी को भी किसी भी सुझाव हैं? मैं गति को बढ़ाने के साथ-साथ netstat में दिखाई देने वाली TIME_WAIT को कम करना चाहता हूं।
धन्यवाद, जेम्स हार्टिग