Allow setting headers when running MD_STD::runCurl
This commit is contained in:
parent
2071b57053
commit
80ab3216d5
|
@ -288,15 +288,20 @@ final class MD_STD {
|
||||||
/**
|
/**
|
||||||
* Wrapper for curling contents from the web.
|
* Wrapper for curling contents from the web.
|
||||||
*
|
*
|
||||||
* @param string $url URL to query.
|
* @param string $url URL to query.
|
||||||
* @param integer $timeout Timeout in milliseconds.
|
* @param integer $timeout Timeout in milliseconds.
|
||||||
|
* @param array<string> $headers HTTP headers to pass on.
|
||||||
|
* Analogous to CURLOPT_HTTPHEADER.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function runCurl(string $url, int $timeout = 1200):string {
|
public static function runCurl(string $url, int $timeout = 1200, array $headers = []):string {
|
||||||
|
|
||||||
$curl = self::curl_init($url, $timeout);
|
$curl = self::curl_init($url, $timeout);
|
||||||
\curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
\curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
if (!empty($headers)) {
|
||||||
|
\curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
||||||
|
}
|
||||||
|
|
||||||
$result = \curl_exec($curl);
|
$result = \curl_exec($curl);
|
||||||
|
|
||||||
|
@ -317,38 +322,43 @@ final class MD_STD {
|
||||||
*
|
*
|
||||||
* @param array<string> $urls URL to query.
|
* @param array<string> $urls URL to query.
|
||||||
* @param integer $timeout Timeout in milliseconds.
|
* @param integer $timeout Timeout in milliseconds.
|
||||||
|
* @param array<string> $headers HTTP headers to pass on.
|
||||||
|
* Analogous to CURLOPT_HTTPHEADER.
|
||||||
*
|
*
|
||||||
* @return array<string>
|
* @return array<string>
|
||||||
*/
|
*/
|
||||||
public static function runCurlMulti(array $urls, int $timeout = 1200):array {
|
public static function runCurlMulti(array $urls, int $timeout = 1200, array $headers = []):array {
|
||||||
|
|
||||||
$mh = curl_multi_init();
|
$mh = \curl_multi_init();
|
||||||
|
|
||||||
$curl_array = [];
|
$curl_array = [];
|
||||||
foreach($urls as $i => $url) {
|
foreach($urls as $i => $url) {
|
||||||
|
|
||||||
$curl_array[$i] = self::curl_init($url, $timeout);
|
$curl_array[$i] = self::curl_init($url, $timeout);
|
||||||
|
|
||||||
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
|
\curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
|
||||||
curl_multi_add_handle($mh, $curl_array[$i]);
|
if (!empty($headers)) {
|
||||||
|
\curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, $headers);
|
||||||
|
}
|
||||||
|
\curl_multi_add_handle($mh, $curl_array[$i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$running = null;
|
$running = null;
|
||||||
do {
|
do {
|
||||||
usleep(10000);
|
\usleep(10000);
|
||||||
curl_multi_exec($mh, $running);
|
\curl_multi_exec($mh, $running);
|
||||||
} while($running > 0);
|
} while($running > 0);
|
||||||
|
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach($urls as $i => $url) {
|
foreach($urls as $i => $url) {
|
||||||
$res[$i] = curl_multi_getcontent($curl_array[$i]) ?: '';
|
$res[$i] = \curl_multi_getcontent($curl_array[$i]) ?: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($urls as $i => $url){
|
foreach($urls as $i => $url){
|
||||||
curl_multi_remove_handle($mh, $curl_array[$i]);
|
\curl_multi_remove_handle($mh, $curl_array[$i]);
|
||||||
}
|
}
|
||||||
curl_multi_close($mh);
|
\curl_multi_close($mh);
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user