[Help] Ajouter le resultat de l'api Youtube dans le cache

Par Maxi Golo, il y a 13 ans


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

Maxi Golo, il y a 13 ans

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));
            }
Grafikart, il y a 13 ans

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

Maxi Golo, il y a 13 ans

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

Lotfi Berrahal, il y a 13 ans

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

duffJohn, il y a 13 ans

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?