PHP Повторное использование завитков в потоке - PullRequest
1 голос
/ 04 августа 2020

Я хотел выполнить повторное использование curl в потоке, как здесь: PHP Оптимизация повторного использования Curl
, но когда я выполнил этот код:

//main code
$n=0;
$app = [];

$app_default = new WebRequest();

for ($n = 0; $n < 50; $n++){

    $app[$n] = $app_default;
    $app[$n] -> start();

}
//
//base thread class
class WebRequest extends Thread {


    public function run() {
        $this->executeREUSEGET();
    }

        private $ch = null;

        function executeREUSEGET()
        {
            if ($this->ch == null) {
                $this->ch = curl_init();
                curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "GET");
                curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($this->ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
                curl_setopt($this->ch, CURLOPT_ENCODING, '');
            }
            curl_setopt($this->ch, CURLOPT_URL, 'https://www.google.com/');

            /* Result handling and processing */
            $result = curl_exec($this->ch);
            return $result;
        }
    
}

, получите эти ошибки:

PHP Fatal error:  Uncaught RuntimeException: the creator of WebRequest already started it in D:\req.php:71

как я могу решить эту проблему?

Я не хочу выполнять curl_unit () и curl_setopt () в каждом запросе в l oop .bcz, он замедляется ...
на самом деле я хочу отправить запрос curl через некоторое время l oop в pthread, а скорость bcz настолько важна для меня, что мне не нужно инициализировать curl в каждом запросе (url и curl_setopt являются stati c). Это снижает скорость.

1 Ответ

1 голос
/ 04 августа 2020

Я нашел этот код, но сработал только один раз. Это означает получение содержимого сайта только один раз:

...