Есть ли такое добро? Хочется посмотреть как там все реализовано. То есть интересует как вообще правильно многопоточные приложения реализовывать. Вот я нашел пример и немного его переделал. Code: <?php /** * Author: Abu Ashraf Masnun * URL: http://masnun.me */ class WorkerThreads extends Thread { private $workerId; public function __construct($string) { $this->date_string = $string; } public function run() { //sleep(rand(0, 3)); echo "{$this->date_string}" . PHP_EOL; } } $data = file('dates.txt'); $data_size = count($data); // Worker pool $workers = []; $t_count = 50; $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"; $workers[$i]->start(); $k++; } } $c_w = count($workers); for($i=0;$i<$c_w;$i++) { if($workers[$i]->join()) { //echo "joining $i\n"; unset($workers[$i]); } } } ?> Он вроде бы работает, но я не уверен, правильно ли и по канонам все сделано. Офсайт рнр примерами, по-моему, по этой теме не блещет.
Сделан то он правильно. Вот только не понятно что за класс родитель Thread. В Официальном php такого нет. Вот потому и нет данных на Оф.сайт Если это https://github.com/krakjoe/pthreads Так используйте примеры от автора. https://github.com/krakjoe/pthreads/tree/master/examples
Ну как нет? Есть http://php.net/manual/ru/book.pthreads.php . Да, спасибо, на гитхабе примеры посмотрел, но все равно не могу решить проблему - у меня скрипт запускает несколько тредов phantomjs, и если фантом не делает никакого вывода в stdout, то kill() не убивает процесс и unset не удаляет объект. Херня какая-то.