我想在线程中执行 curl 重用,如下所示:PHP Curl Reuse Optimization
但是当我执行此代码时:
//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
我该如何解决这个问题?
我不想在loop.bcz中的每个请求中执行curl_unit()和curl_setopt()它会变慢......
实际上我想在pthread的while循环中发送curl请求,bcz速度对我来说非常重要,我不需要在每个请求中初始化 curl(url 和 curl_setopt 是静态的)。它会降低速度。