У меня есть сценарий PHP, где я создаю несколько потоков с библиотекой pthread. В этих потоках я использую функцию sleep (). Проблема в том, что sleep () приостановил мой основной поток. Так что я теряю все преимущества создания тем …
У кого-нибудь есть способ приостановить мои темы, не останавливая мою основную тему?
Этот многопоточный класс вызывает другой php-скрипт, где спит.
class CallAgent extends Thread
{
private $id_com;
private $agt_id;
private $pat_id;
/**
* CallAgent constructor.
*/
public function __construct($id_com, $agt_id, $pat_id)
{
$this->id_com = $id_com;
$this->agt_id = $agt_id;
$this->pat_id = $pat_id;
}
public function run()
{
echo shell_exec("C:\\xampp\php\php.exe -f C:\\xampp\htdocs\call_script.php -- " .$this->id_com. " " .$this->agt_id. " " .$this->pat_id);
}
}
Это скрипт, вызываемый потоком.
function run($id_com, $agt_id, $pat_id)
{
$bdd = new bdd();
$bdd->connect();
$decision = rand(0, 100);
if ($decision >= 2) {
echo "L'agent à décrocher et rentre en com avec un patient\n";
$bdd->update_etat_com($id_com, "decrocher");
$bdd->update_agt_etat($agt_id, "com");
$bdd->update_pat_etat($pat_id, "OUT");
sleep(8);
echo "Call finished.\n";
$bdd->update_agt_etat($agt_id, "repos");
}
else {
$bdd->update_dispo_agt($agt_id, "indisponible");
echo "Timeout Agent.\n";
}
}
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …