Created
December 23, 2016 03:23
-
-
Save 3zzy/9c42c9293e37add3635e2245450758d3 to your computer and use it in GitHub Desktop.
cURL vs get_headers() Speed Test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Get headers for 100 unique random domains with get_headers() and cURL to determine which is faster. | |
/* | |
TL;DR -> cURL is significantly faster. | |
get_headers (GET) vs cURL: | |
Execution time : 139.95884609222 seconds | |
Execution time : 65.998840093613 seconds | |
get_headers (HEAD) vs cURL: | |
Execution time : 114.60515785217 seconds | |
Execution time : 66.077962875366 seconds | |
*/ | |
$urls = [ | |
"http://familyshare.com/", | |
"http://elitedaily.com/", | |
"http://www.pickthebrain.com/", | |
"http://i100.independent.co.uk/", | |
"http://thingsorganizedneatly.tumblr.com/", | |
"http://www.cheatsheet.com/", | |
"https://jet.com/", | |
"https://nightwalk.withgoogle.com/en/panorama", | |
"http://www.vumble.com/", | |
"http://fusion.net/", | |
"https://www.zozi.com", | |
"http://joshworth.com/dev/pixelspace/pixelspace_solarsystem.html", | |
"http://how-old.net/", | |
"https://www.dosomething.org", | |
"https://devart.withgoogle.com/", | |
"http://www.ranker.com/", | |
"http://the-toast.net/", | |
"https://www.futurelearn.com/", | |
"https://croaciaaudio.com/", | |
"http://www.thesimpledollar.com/", | |
"http://giphy.com/giphytv", | |
"http://snapzu.com/", | |
"https://www.touchofmodern.com/", | |
"http://www.howstuffworks.com/", | |
"http://www.sporcle.com/", | |
"http://www.factcheck.org/", | |
"https://www.privacytools.io/", | |
"http://tiffanithiessen.com/", | |
"http://www.supercook.com/", | |
"http://www.livescience.com/", | |
"http://www.freshnessmag.com", | |
"http://www.abeautifulmess.com/", | |
"http://cardboardboxoffice.com/", | |
"http://www.takepart.com/", | |
"http://www.fixya.com/", | |
"http://bestreviews.com/", | |
"http://theodysseyonline.com/", | |
"http://justdelete.me/", | |
"http://adventure.com/", | |
"http://www.carryology.com/", | |
"http://whattheysee.tumblr.com/", | |
"https://unsplash.com/", | |
"http://fromwhereidrone.com/", | |
"http://www.attn.com/", | |
"http://ourworldindata.org/", | |
"http://www.melty.com/", | |
"http://www.truthdig.com/", | |
"https://tosdr.org/", | |
"https://thinga.com/", | |
"http://forvo.com/", | |
"http://tiii.me/", | |
"https://snapguide.com/", | |
"http://www.tubefilter.com/", | |
"http://www.inherentlyfunny.com/", | |
"http://www.someecards.com/", | |
"https://this.cm/", | |
"http://littlebigdetails.com/", | |
"http://clapway.com/", | |
"http://www.nerdfitness.com/", | |
"http://iwantdis.com/", | |
"http://Racked.com", | |
"http://thesweetsetup.com/", | |
"http://www.we-heart.com/", | |
"https://www.revealnews.org/", | |
"https://featuredcreature.com/", | |
"http://www.scotthyoung.com/blog/", | |
"http://www.thehandandeye.com/", | |
"http://www.thenorthernpost.com/", | |
"http://www.welzoo.com/", | |
"http://www.tickld.com/", | |
"http://thinksimplenow.com/", | |
"http://www.quietrev.com/", | |
"http://www.freshoffthegrid.com/", | |
"https://www.generosity.com/", | |
"http://addicted2success.com/", | |
"http://cubiclane.com/", | |
"http://waitbutwhy.com/", | |
"http://toolsandtoys.net/", | |
"http://googling.co/", | |
"http://penelopetrunk.com/", | |
"http://iaf.tv/", | |
"http://artofvisuals.com/", | |
"http://www.lifeaftercollege.org/blog", | |
"http://listverse.com/", | |
"http://chrisguillebeau.com/", | |
"http://expeditionportal.com/", | |
"http://www.marieforleo.com/", | |
"http://mostexclusivewebsite.com/", | |
"http://www.alphr.com/", | |
"http://www.rtings.com/", | |
"http://all-that-is-interesting.com/", | |
"http://theunbeatnpath.xyz/", | |
"http://www.keepinspiring.me/", | |
"https://paidtoexist.com/blog/", | |
"http://www.lovethispic.com/", | |
"http://riskology.co/blog/", | |
"http://geyserofawesome.com/", | |
"http://www.eugenewei.com/", | |
"http://clickotron.com/" | |
]; | |
$startTime = microtime(true); | |
stream_context_set_default( | |
array( | |
'http' => array( | |
'method' => 'HEAD' | |
) | |
) | |
); | |
$headers1 = []; | |
foreach ($urls as $url) { | |
$headers1[] = get_headers($url); | |
} | |
$endTime = microtime(true); | |
$elapsed = $endTime - $startTime; | |
echo "Execution time : $elapsed seconds \n"; | |
$startTime = microtime(true); | |
$headers2 = []; | |
foreach ($urls as $url) { | |
$ch = curl_init(); | |
curl_setopt($ch, CURLOPT_URL, $url); | |
curl_setopt($ch, CURLOPT_HEADER, true); | |
curl_setopt($ch, CURLOPT_NOBODY, true); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
curl_setopt($ch, CURLOPT_TIMEOUT, 10); | |
$header2[] = curl_exec($ch); | |
} | |
$endTime = microtime(true); | |
$elapsed = $endTime - $startTime; | |
echo "Execution time : $elapsed seconds \n"; | |
?> |
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
needs to be set to make this comparison reliable, because following redirects is default for get_headers() - see https://www.php.net/manual/en/function.get-headers.php#100113
I did few tests on my own and get_headers is in fact faster than curl after making curl to follow redirects.
I did few tests on my own and get_headers is in fact faster than curl after making curl to follow redirects.
@zaporylie is the difference significantly faster?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
That's super useful!