Last active
November 3, 2022 07:32
-
-
Save guanguans/166a02baf0dd0ef8f4e68ce11b1efb42 to your computer and use it in GitHub Desktop.
#curl
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 | |
/** | |
* curl 并发请求示例 | |
*/ | |
$startTime = microtime(true); | |
$curls = []; | |
for ($i = 1; $i <= 10; $i++) { | |
// 创建 curl 句柄 | |
$curls[$i] = $curl = curl_init(); | |
curl_setopt_array($curl, [ | |
CURLOPT_URL => "https://strangecat-api.test/api/v1/ping", | |
CURLOPT_RETURNTRANSFER => true, | |
CURLOPT_CUSTOMREQUEST => "GET", | |
CURLOPT_TIMEOUT => 30, | |
CURLOPT_SSL_VERIFYPEER => false, | |
]); | |
} | |
$mcurl = curl_multi_init(); // 1.创建 curl 批处理句柄 | |
foreach ($curls as $ch) { | |
curl_multi_add_handle($mcurl, $ch); // 2.添加 curl 句柄 | |
} | |
$active = null; | |
do { | |
// echo "running", $active, PHP_EOL; | |
curl_multi_exec($mcurl, $active); // 3.执行 curl 批处理句柄 | |
} while ($active > 0); // 4. | |
foreach ($curls as $k => $ch) { | |
$rets[$k] = curl_multi_getcontent($ch); // 5.获取 curl 批处理句柄的返回值 | |
curl_multi_remove_handle($mcurl, $ch); // 6.移除 curl 句柄 | |
} | |
curl_multi_close($mcurl); // 7 关闭 curl 批处理句 | |
$endTime = microtime(true); | |
var_export($rets); | |
printf( | |
PHP_EOL . "Time: %.3f s | Memory Peak Usage: %s bytes | Memory Usage: %s bytes" . PHP_EOL, | |
$endTime - $startTime, | |
memory_get_peak_usage(), | |
memory_get_usage() | |
); |
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 | |
/** | |
* curl 普通请求示例 | |
*/ | |
$startTime = microtime(true); | |
$rets = []; | |
for ($i = 1; $i <= 10; $i++) { | |
// 创建 curl 句柄 | |
$curl = curl_init(); | |
curl_setopt_array($curl, [ | |
CURLOPT_URL => "https://strangecat-api.test/api/v1/ping", | |
CURLOPT_RETURNTRANSFER => true, | |
CURLOPT_CUSTOMREQUEST => "GET", | |
CURLOPT_TIMEOUT => 30, | |
CURLOPT_SSL_VERIFYPEER => false, | |
]); | |
$response = curl_exec($curl); | |
$err = curl_error($curl); | |
// 关闭 curl 句柄 | |
curl_close($curl); | |
$rets[$i] = $err ? : $response; | |
echo "running", $i, PHP_EOL; | |
} | |
$endTime = microtime(true); | |
var_export($rets); | |
printf( | |
PHP_EOL . "Time: %.3f s | Memory Peak Usage: %s bytes | Memory Usage: %s bytes" . PHP_EOL, | |
$endTime - $startTime, | |
memory_get_peak_usage(), | |
memory_get_usage() | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment