PHP卷曲代理生成高CPU负载

时间:2017-10-30 15:06:42

标签: php curl proxy

在调查了应用程序使用20个并行PHP-cli脚本发送许多curl请求所产生的高CPU负载的原因后,我发现主要原因是PROXY选项设置为curl句柄。

以下代码在没有代理的情况下运行curl_exec时产生0.5-1.5%的CPU负载,使用任何代理时产生12-25%的CPU负载(我尝试了很多不同的代码)。

由于许多线程同时运行许多请求,很快就会变得很重要。

我正在使用: Ubuntu 16.04 PHP 7.0.22 卷曲7.55.1

我可以申请修复或解决方法吗?

$address = 'xxx';
$port = 'xxx';
$url = 'https://api.ipify.org?format=json';

do {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_ENCODING, 'identity');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_PROXY, $address);
    curl_setopt($ch, CURLOPT_PROXYPORT, $port);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_exec($ch);
    curl_close($ch);
    sleep(10);

} while (true); 

0 个答案:

没有答案