2017-07-18 24 views
6

Uruchom poniżej kodu w polu php7 i użyj polecenia netstat I znaleziono 10 połączeń w stanie CLOSE_WAIT. Ale kiedy uruchomię ten sam kod w innym polu php7, jest to normalne.Dlaczego curl_close w php7 nie działa? Istnieje wiele połączeń CLOSE_WAIT

<?php 

for($i = 0; $i < 10; ++$i){ 
     $ch = curl_init(); 
     curl_setopt ($ch, CURLOPT_URL, "http://www.baidu.com"); 
     curl_setopt ($ch, CURLOPT_HEADER, 0); 
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_exec($ch); 
     $return = curl_exec ($ch); 
     curl_close ($ch); 
     echo $i."\n\n"; 
} 

sleep(10000); 

Wersja php7 i os są dokładnie takie same. Myślę, że być może niektóre parametry systemu nie są poprawnie skonfigurowane. Czy możecie podać kilka wskazówek, na które warto się przyjrzeć?

+0

Czy oba pola mają taką samą wersję zwijaj? – jbsmoove

+0

@jbsmoove curl version on box 1: curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2. wersja curl na pudełku 2: curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 – Felix

Odpowiedz

0

myślę, że to jest duplikatem PHP CURL with proxy causes CLOSE_WAIT on socket

tl; dr - Dodaj curl_setopt($ch, CURLOPT_HTTPHEADER, array("Connection: close"));

+0

Dzięki. W rzeczywistości na to pytanie odpowiedziałam :). Spaceruj po rozwiązaniu to dodaj nagłówek, ale nie znam jego głównej przyczyny. – Felix

+0

Dźwięk podobny do systemu operacyjnego nie powoduje zamknięcia zasobnika gniazda. –