PHP Curl Slowness

2020-05-22 19:51发布

For some reason my curl call is very slow. Here is the code I used.

$postData = "test"
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);

Executing this code takes on average 250ms to finish. However when I just open the url in a browser, firebug says it only takes about 80ms.

Is there something I am doing wrong? Or is this the overhead associated with PHP Curl.

It's the call to

curl_exec

That is taking up all the time.

UPDATE:

So I figured out right after I posted this that if I set the curl option

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

It significantly slows down

curl_exec

The post data could be anything and it will slow it down.

Even if I set

curl_setopt($ch, CURLOPT_POST, false);

It's slow.

I'll try to work around it by just adding the parameters to the URI as a query string.

SECOND UPDATE:

Confirmed that if I just call the URI using GET and passing parameters as a query string it is much faster than using POST and putting the parameters in the body.

5条回答
\"骚年 ilove
2楼-- · 2020-05-22 20:18

generally thats acceptable when you are loading contents or posting to slower end of world. curl call are directly proportional to your network speed and throughput of your webserver

查看更多
等我变得足够好
3楼-- · 2020-05-22 20:29

CURL has some problems with DNS look-ups. Try using IP address instead of domain name.

查看更多
祖国的老花朵
4楼-- · 2020-05-22 20:31

Curl has the ability to tell exactly how long each piece took and where the slowness is (name lookup, connect, transfer time). Use curl_getinfo (http://www.php.net/manual/en/function.curl-getinfo.php) after you run curl_exec.

If curl is slow, it is generally not the PHP code, it's almost always network related.

查看更多
甜甜的少女心
5楼-- · 2020-05-22 20:32

try this

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
查看更多
你好瞎i
6楼-- · 2020-05-22 20:33

The curl functions in php directly use the curl command line tool under *nix systems.

Therefore it really only depends on the network speed since in general curl itself is much faster than a webbrowser since it (by default) does not load any additional data like included pictures, stylesheets etc. of a website.

It might be possible that you are not aware, that the network performance of the server on which you were testing your php script is way worse than on your local computer where you were testing with the browser. Therefore both measurements are not really comparable.

查看更多
登录 后发表回答