Originalmente inviato da
filsil
Forse queste due richieste impiegano troppo tempo ad essere elaborate e la connessione viene chiusa, non riesci ad effettuare più richieste più semplici e unire i risultati nello script php?
Ma la connessione non viene chiusa, perchè le richieste restituiscono i risultati interi, altrimenti li restituirebbero parziali.
Posto le funzioni che ho implementato, non capisco cosa possa esserci di errato.
Il codice che elabora la richiesta per ottenere l'id di un canale YouTube dato il suo nome:
Codice:
function getChannelID($channel)
{
$getChannelID = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=".urlencode($channel)."&type=channel&key=".APIKEY;
$getChannelID = file_get_contents_curl($getChannelID);
$channelID = json_decode($getChannelID, true);
return $channelID['items'][0]['id']['channelId'];
}
Il codice che elabora la richiesta per leggere tutte le informazioni del canale
Codice:
function getLastUploadedVideoXML($name)
{
$stringXML = file_get_contents_curl('https://www.youtube.com/feeds/videos.xml?channel_id='.getChannelID($name))
$xml = new SimpleXMLElement($stringXML);
$yt = $xml->entry[0]->children('http://www.youtube.com/xml/schemas/2015');
$media = $xml->entry[0]->children('http://search.yahoo.com/mrss/');
$video = array(
"title" => $xml->entry[0]->title,
"description" => $media->group->description,
"thumb" => $media->group->thumbnail->attributes()["url"],/*"https://i.ytimg.com/vi/".$yt->videoId."/sddefault.jpg"*/
"id" => $yt->videoId,
);
return $video;
}
E per finire questa è la funzione che esegue le richieste:
Codice:
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$data = curl_exec($ch);
if(curl_errno($ch))
echo 'Request error: ' . curl_error($ch);
curl_close($ch);
return $data;
}