8791 sujets

Développement web côté serveur, CMS

Bonjour, dans le cadre d'un site de buzz, je propose des vidéos issus de dailymotion, de youtube et de rutube aussi. Pour les deux premiers j'arrive très bien à intégrer les informations issues des vidéos sur mon site grace à leur API, mais le problème réside dans Rutube. Bref j'ai pu créer un script pour régler un peu le problème. En voici le code :

<?php function file_get_contents_curl($url){$ch = curl_init();curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);$data = curl_exec($ch);curl_close($ch);return $data;}function description($param){$id = $_REQUEST["id"];$html = file_get_contents_curl("http://rutube.ru/tracks/$id.html");$doc = new DOMDocument();@$doc->loadHTML($html);$nodes = $doc->getElementsByTagName('title');$metas = $doc->getElementsByTagName('meta');for ($i = 0; $i < $metas->length; $i++){$meta = $metas->item($i);if($meta->getAttribute('property') == $param) {return $meta->getAttribute('content');}}}?>


Bref dans la page concerné par rutube, je fais appel à ce fichier, et je fais appel plusieurs fois à différents paramètres comme
<?php echo description('og:title'); ?>


L'un des problèmes est que ça rame avant de charger la page. N'y a-t-il aucun moyen avec du php re reprendre le résultat de la fonction une seule fois pour l'afficher plusieurs fois, ou bien un autre moyen de ne pas avoir une page trop longue à charger? Merci d'avance.
Bonjour,

Ton code linaire est très difficile à lire, mais je de ce que je vois, tu ne fais aucun traitement des erreurs, c'est mal ! Smiley cligne
Tu devrais par exemple vérifier que le page http://rutube.ru/tracks/$id.html existe réellement.

Pour ton problème de lenteur due aux requètes cURL, tu n'as pas trop le choix que d'utiliser un gestionnaire de cache côté serveur. Le sujet est vaste, je te laisse te renseigner sur le sujet, mais en gros ce genre de fonction ne devrait être éxécuté qu'une fois. Les fois suivantes, ton serveur devrait aller chercher les infos voulues dans une base de données sur ton serveur, ou dans des fichiers préalablement mis en cache.