note 129047 added to function.curl-init
| From: | VictorWumble at main dot php dot net | Date: | Wed, 15 Nov 2023 13:52:56 +0000 |
| Subject: | note 129047 added to function.curl-init | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-221002@lists.php.net to get a copy of this message | ||
NextgenThemes' note is applicable for very very limited situations. For completeness's
sake, let's consider the following code snippet:
<?php
/*
Your localhost has a default Apache which simply returns "It works!"
*/
$repeatCount = 1000;
// begin section
// this section is slow
// call localhost, create new handle each time
$time = microtime(true);
foreach (range(1, $repeatCount) as $ignored) {
$ch = curl_init("http://localhost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// do something with the response
unset($response);
curl_close($ch);
}
unset($ch);
$elapsed = microtime(true) - $time;
echo "Recreate curl handle, time taken: " . $elapsed . "\n";
// end section
// begin section
// this section is much faster
// call localhost, but reuse the handle
$time = microtime(true);
$ch = curl_init("http://localhost");
foreach (range(1, $repeatCount) as $ignored) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// do something with the response
unset($response);
}
curl_close($ch);
$elapsed = microtime(true) - $time;
echo "Reuse curl handle, time taken: " . $elapsed . "\n";
// end section
/*
Example output:
Recreate curl handle, time taken: 11.289301872253
Reuse curl handle, time taken: 0.53790807723999
*/
?>
The above code supports the claim by NextgenThemes, however the "send curl requests in
sequence" method in general is unnecessarily slow because:
- network transfer time (e.g. 100ms)
- remote processing time (e.g. 50ms)
- usually, no need to send requests in specific sequence
So, in practice, when you need to send multiple curl requests at the same time, just use the
curl_multi_init method. Don't consider the "send curl requests in sequence" method
unless you have very very specific/special needs.
----
Server IP: 45.112.84.4
Probable Submitter: 45.91.157.134 (proxied: 14.199.243.9)
----
Manual Page -- https://php.net/manual/en/function.curl-init.php
Edit -- https://main.php.net/note/edit/129047
Del: integrated -- https://main.php.net/note/delete/129047/integrated
Del: useless -- https://main.php.net/note/delete/129047/useless
Del: bad code -- https://main.php.net/note/delete/129047/bad+code
Del: spam -- https://main.php.net/note/delete/129047/spam
Del: non-english -- https://main.php.net/note/delete/129047/non-english
Del: in docs -- https://main.php.net/note/delete/129047/in+docs
Del: other reasons-- https://main.php.net/note/delete/129047
Reject -- https://main.php.net/note/reject/129047
Search -- https://main.php.net/manage/user-notes.php