Я уже не знаю куда с этим вопросом писать. Суть в том, что мне нужен таймаут в выполнении потока и соответственно завершать поток, когда таймаут достигнут. Хотелось бы знать, есть ли такая возможность в самой библиотеке? Пробовал вручную реализовать, но здесь еще одна проблема $workers[$i]->kill(); возвращает false и поток не завершает. В чем может быть проблема? Спасибо. Код (PHP): <?php /** * Author: Abu Ashraf Masnun * URL: http://masnun.me */ //define("TMT",3); class WorkerThreads extends Thread { private $workerId; public function __construct($string) { $this->command_string = trim($string); } public function run() { echo $this->command_string." ".Thread::getCurrentThreadId()."\n"; //sleep(rand(0, 3)); $str = "C:\\Users\\Alex\\Desktop\\2web\\phantom\\phantomjs.exe C:\\Users\\Alex\\Desktop\\2web\\test.js "; $url = $this->command_string; $d = explode("://",$url); $ex_str = $str." ".$url." > ".$d[1].".html"; //$ex_str = $str." ".$url; //echo $ex_str; //$ex_str = escapeshellarg($ex_str); //echo $ex_str; exec($ex_str, $out); //print_r($out); } } //$data = file('sites.txt'); $data_f = file('sites_x.txt'); print_r($data_f); $data = array(); $data_size = count($data_f); for($i = 0;$i<$data_size;$i++) { $info = explode(";",trim($data_f[$i])); if($info[1] === 'y') continue; $data[] = $info[0]; } print_r($data); $data_size = count($data); // Worker pool $workers = []; $t_count = 4; $flag = 1; $k = 0; //echo "$data_size"; while($flag === 1) { /* //echo "$k\n"; if($k >= $data_size) { //echo "111"; exit(); $flag = 0; break 2; } */ $c_w = count($workers); if($c_w < $t_count) { for($i = $c_w; $i<$t_count - $c_w;$i++) { if($k >= $data_size) { $flag = 0; break; } $workers[$i] = new WorkerThreads($data[$k]); //echo $data[$k]."\n"; echo "worker $i started\n"; $workers[$i]->start(); $k++; } } $c_w = count($workers); for($i=0;$i<$c_w;$i++) { $workers[$i]->kill(); unset($workers[$i]); echo "unset $i\n"; //var_dump($workers[$i]->isTerminated(), $workers[$i]->getTerminationInfo()); /* if($workers[$i]->join()) { //var_dump($workers[$i]->isTerminated(), $my->getTerminationInfo()); echo "joining $i\n"; unset($workers[$i]); } */ } } ?>