@astrotrain

Почему pthreads php 7.0.2 x86 не хватает ресурсов?

Есть такой код:

<?php 
class WorkerThreads extends Thread
{
    private $workerId;
    private $url;

    public function __construct($string)
    {
        $this->url = $string;
    }

    public function run()
    {

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_URL, $this->url);

        if ($this->post) {
            curl_setopt($curl, CURLOPT_POSTFIELDS, $this->post);
        }

        $response = curl_exec($curl);
        //echo $response;
        curl_close($curl);
    }
}

$data = file('urls.txt'); 
$data_size = count($data);
// Worker pool
$workers = [];
$t_count = 100;
$flag = 1;
$k = 0;

while($flag === 1)
{   

    $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;
            }   

            $url = explode("|",$data[$k]);
            $workers[$i] = new WorkerThreads($url[0]);
            echo $k." ".$url[0]."\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]);

        }
    }


}

?>


Почему-то при запуске постоянно вылетает исключение:

Fatal error: Uncaught RuntimeException: cannot start WorkerThreads, out of reso
rces in C:\Users\alex\Desktop\test.php:56
Stack trace:
#0 C:\Users\alex\Desktop\test.php(56): Thread->start()
#1 {main}
  thrown in C:\Users\alex\Desktop\test.php on line 56


Но это только в xampp и на php 7 версии x86, а в х64 версии все нормально. В чем может быть дело? Инфы по теме не так уж много. Спасибо.
  • Вопрос задан
  • 389 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы