PHP: <?php /*###################### многопоточный носко4екер по мотивам скрипта де-визбла на питоне .. [ - надеюсь он не в обиде за идейный плагиат - ] (C) 159932 ######################*/ set_time_limit(0); error_reporting(0); $cout = 10; # кол-во потоков, советую не ставить много, если чек происходит с локала, да и при маленьком канале тем более.. $time = 10; # таймаут, чем больше потоков, тем больше таймаут надо ставить .. $filn = 'sock.txt'; # файл с носкаме $good = 'good.txt'; # файл куда писать гут носки после чека $deli = '0'; # 0 - ничего не делать с файлами; # 1 - удалить файл с носками после чека; # 2 - удалить старый good.txt # 3 - удалить файл с носками, и старый good.txt # кавычки для понту :D ############################################################################ $file[0] = array_unique(file($filn)); if (sizeof($file[0]) < $cout) $file = array_chunk($file[0], $cout); if ($deli == 1) unlink($filn); if ($deli == 2) unlink($good); if ($deli == 3) { unlink($filn); unlink($good);} $fin = fopen($good, 'a'); foreach ($file as $ips) { $hren = array(); $mh = curl_multi_init(); foreach ($ips as $ip) { $ip = trim($ip); if (!preg_match('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}#',$ip)) continue; $hren[$ip] = curl_init('http://cmyip.com/'); curl_setopt($hren[$ip], CURLOPT_RETURNTRANSFER, 1); curl_setopt($hren[$ip], CURLOPT_TIMEOUT, $time); curl_setopt($hren[$ip], CURLOPT_PROXY, $ip); curl_setopt($hren[$ip], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); curl_multi_add_handle ($mh,$hren[$ip]); } if (!sizeof($hren)) continue; do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active and $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } foreach ($hren as $i => $ip) { $res[$i]=curl_multi_getcontent($hren[$i]); curl_multi_remove_handle($mh,$hren[$i]); curl_close($hren[$i]); } curl_multi_close($mh); foreach ($res as $ip=>$data) { $ip = explode(':',$ip); if (strpos($data, $ip[0]) !== false) fwrite($fin, $ip[0].':'.$ip[1]."\r\n"); } } fclose($fin); ?>