Основой того, что я пытаюсь сделать, является многократный доступ к API для загрузки множества аудиофайлов.
Идея в том, что у меня есть функция, называемая download_audio.Эта функция - cURL, которая работает для любого уникального идентификатора, который я ей даю.Однако, когда я помещаю ту же самую функцию в цикл foreach, который перебирает идентификаторы, она будет работать один раз, а затем останавливаться.Мне любопытно, как и почему он останавливается, и как я могу решить эту проблему.
В частности, это безопасный сервер, который требует от меня получить токен, прежде чем я смогу получить к нему доступ, вот что такое «JWTtoken»,В противном случае мой код выглядит так:
function download_audio($JWTtoken, $contactId)
{
$format = "wav";
$userArray = array();
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://MYURL/" . $contactId . "/" . $format,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_CAINFO => "../cacert.pem",
CURLOPT_TIMEOUT => 15,
CURLOPT_SSL_VERIFYPEER => 1,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSLVERSION => 6,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"content-type: audio/" . $format, $JWTtoken,
"Content-Description: File Transfer",
"Content-Type: audio/" . $format,
"Content-Disposition: attachment; filename=" . $contactId . "." . $format,
"Content-Transfer-Encoding: binary",
"Expires: 0",
"Cache-Control: must-revalidate",
"Pragma: public"
)));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err)
{
return "cURL Error #:" . $err;
}
else
{
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . $contactId . "." . $format);
echo $response;
return 1;
}
}