在调查了应用程序使用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);