Open Still4 opened 4 years ago
<?php $worker_num_total = 40; $global_data = array(); $variables_list = array_pad(array(), 1000000, 0); $variables = array_chunk($variables_list, 40); foreach ($variables as $key => $chunks) { $pool = new \Pool($worker_num_total, \Worker::class); $pool->submit(new SecondThread($chunks)); while (($worker_num = $pool->collect()) > 0) { usleep(100000); } $pool->shutdown(); unset($pool); gc_collect_cycles(); } class SecondThread extends \Thread { private $chunks; public function __construct($chunks) { $this->chunks = $chunks; } public function run() { $pool = new \Pool(10, \Worker::class); foreach ($this->chunks as $chunk) { $pool->submit(new ThirdThread($chunk)); } while (($worker_num = $pool->collect()) > 0) { usleep(100000); } $pool->shutdown(); unset($pool); gc_collect_cycles(); } } class ThirdThread extends \Thread { private $chunk; public function __construct($chunk) { $this->chunk = $chunk; } public function run() { $this->chunk; } } ?>
the first minute
about 5 mins later
about 10 mins later
php versoin PHP 7.2.6 (cli) (built: Jun 1 2018 07:54:23) ( ZTS ) pthread 3.1.7dev
the first minute
about 5 mins later
about 10 mins later