<?php
set_time_limit(0);
/*-----------------------------------------------------------------------*/
	echo "\n[+]Enter your proxy list: ";
	$proxy_list = fgets(STDIN);
	$proxy_list = str_replace("\r\n","",$proxy_list);
	$proxy_list = trim($proxy_list);

	echo "[+]Enter number of thread: ";
	$thread = fgets(STDIN);
	$thread = str_replace("\r\n","",$thread);
	$thread = trim($thread);
	echo "[+]Enter timeout sec: ";
	$timeout = fgets(STDIN);
	$timeout = str_replace("\r\n","",$timeout);
	$timeout = trim($timeout);
	echo "[+]Checking proxies\n";
	$open_file	=	file($proxy_list);
	echo "-------------------------------------------------------\n";
	$open_file  =	preg_replace("#\r\n#si","",$open_file);

		
	checker($open_file,$thread);
/*-----------------------------------------------------------------------*/
function checker($ips,$thread)
{
	global $timeout;
	
	$multi 	= curl_multi_init();
	$ips 	= array_chunk($ips,$thread);
	$total 	= 0;
	$time1  = time();
		foreach($ips as $ip)
		{
			for($i=0;$i<=count($ip)-1;$i++)
			{
			$curl[$i] = curl_init();
			curl_setopt($curl[$i],CURLOPT_RETURNTRANSFER,1);
			curl_setopt($curl[$i],CURLOPT_URL,$ip[$i]);
			curl_setopt($curl[$i],CURLOPT_TIMEOUT,$timeout);
			curl_multi_add_handle($multi,$curl[$i]);
			}
			
			do
			{
			curl_multi_exec($multi,$active);
			usleep(11);
			}while( $active > 0 );
			
			foreach($curl as $cid => $cend)
			{
				$info = curl_getinfo($cend);
				curl_multi_remove_handle($multi,$cend);
				if($info['http_code'] != 0)
				{
					$total++;
					echo "[~]Proxy works -> ".$ip[$cid]."\n";
					save_file("works.txt",$ip[$cid]);
				}
			}
		}
	$time2 = time();
	echo "\n[+]Total working proxies: $total,checking completed\n";
	echo "[+]Elapsed time -> ".($time2-$time1)." seconds\n";
	echo "-------------------------------------------------------\n";
}
	
function save_file($file,$content)
{
	$open = fopen($file,'ab');
	fwrite($open,$content."\r\n");
	fclose($open);
}

?>