PLS я новичок в многопоточности. Мне нужно было вызывать несколько функций одновременно. поэтому я сделал этот код. он работает нормально, время отклика дольше, чем самый длинный возврат функции. я имею в виду, что после выполнения всех функций я напишу свой результат из функции … но иногда случается, что какая-то функция не отвечает (эти функции отправляют запрос в страховую компанию, и он возвращает цену страхования). Мне нужен тайм-аут. если этот поток не возвращает никакого результата за это время, мне нужно убить этот поток и выводить результаты из других потоков
PS: извините за мой английский, я надеюсь, вы понимаете меня 🙂
$input = Array(
'form_pzp_vozidlo_vykon'=> '55',
'form_pzp_objem_motora' => '500',
'form_pzp_rok_vyroby' => '2014'
);
class MyWork extends Threaded {
public $name;
public $input;
public function __construct($name, $input) {
//echo "Constructing worker $name<br>";
$this->name = $name;
$this->input = $input;
}
public function run() {
if ($this->name) {
$motor_func = 'pzp_'.$this->name;
$motor_vysledok = $motor_func ($this->input);
echo '<pre>';
print_r($motor_vysledok);
echo '</pre>';
}
}
}
class MyWorker extends Worker {
public function run() {}
}
$pool = new Pool(1, \MyWorker::class);
$pool->submit(new MyWork("union",$input));
$pool->submit(new MyWork("axa",$input));
$pool->submit(new MyWork("uniqa",$input));
$pool->shutdown();
Задача ещё не решена.
Других решений пока нет …