Bonjour,
j'essai depuis quelques heures d'ajouter le resultat de l'api youtube dans un ficher "cache.xml" mais je n'y arrive pas !

<?php
            $youtubecache = "youtube/cache.xml";
            if (time() - filemtime($youtubecache) > 10 ) {
            require_once("Zend/Gdata/YouTube.php");
            Zend_Loader::loadClass('Zend_Gdata_Youtube');
            $yt = new Zend_Gdata_Youtube();
            $videoFeed = $yt->getVideoFeed('http://gdata.youtube.com/feeds/users/grafikrt/uploads');
            file_put_contents($youtubecache, $videoFeed);
            echo '<p>direct</p>';

            }else{
            $videoFeed = file_get_contents($youtubecache);
            echo '<p>cache</p>';
            }

Quand je met "123" à la place de $videoFeed depuis file_get_contents le système enregistre bien la varaible mais quand ça vien de youtube non :(
Quelqu'un peu m'aider ?

EDIT: l'api fonctionne bien sans le cache, mais je souhaite le mettre pour optimiser la vitesse de chargement de la page :) et eviter le problème de quota de youtube.

EDIT: Solution trouvé ;)

$youtubecache = "youtube/cache.xml";
            if (time() - filemtime($youtubecache) > 100000000 ) {
            require_once("Zend/Gdata/YouTube.php");
            Zend_Loader::loadClass('Zend_Gdata_Youtube');
            $yt = new Zend_Gdata_Youtube();
            $videoFeed = $yt->getVideoFeed('http://gdata.youtube.com/feeds/users/grafikrt/uploads');
            file_put_contents($youtubecache, serialize($videoFeed));
            }else{
            require_once("Zend/Gdata/YouTube.php");
            Zend_Loader::loadClass('Zend_Gdata_Youtube');
            $yt = new Zend_Gdata_Youtube();
            $videoFeed = unserialize(file_get_contents($youtubecache));
            }

Merci beaucoup

Maxigolo

5 réponses


Grafikart
Réponse acceptée

$videoFeed est un objet si mes souvenir sont bon donc tu ne pourra pas le sauvegarder. Vérifie quand même.

Maxi Golo
Auteur
Réponse acceptée

Je l'aurais bien copié mais il est trop long :) Il retourne les infos sur les video youtube mais je ne l'utilise pas directement les informations sont extraite grâce à l'api avec par rexemple $v->getVideoTitle() pour le titre.

EDIT: Solution trouvé ;)

$youtubecache = "youtube/cache.xml";
            if (time() - filemtime($youtubecache) > 100000000 ) {
            require_once("Zend/Gdata/YouTube.php");
            Zend_Loader::loadClass('Zend_Gdata_Youtube');
            $yt = new Zend_Gdata_Youtube();
            $videoFeed = $yt->getVideoFeed('http://gdata.youtube.com/feeds/users/grafikrt/uploads');
            file_put_contents($youtubecache, serialize($videoFeed));
            }else{
            require_once("Zend/Gdata/YouTube.php");
            Zend_Loader::loadClass('Zend_Gdata_Youtube');
            $yt = new Zend_Gdata_Youtube();
            $videoFeed = unserialize(file_get_contents($youtubecache));
            }

Le resultat se présente sous forme "array" ,il y aurait une altérantive pour sauvgarder le resultat ?

il te donne quoi l'array? Il y a des choses intéressantes que tu peux récupérer ?

Salut,
lorsque j'emploi ta solution Maxi Golo, voila mon erreur:
'Notice (8): unserialize() [function.unserialize]: Error at offset 26095 of 904541 bytes [APP/View/Pages/videos.ctp, line 24]'

Ma ligne 24 étant :
$videoFeed = unserialize(file_get_contents($youtubecache));

Que dois je faire?