2010-11-17 15 views
1

J'utilise this script pour obtenir le premier élément de mon fil Twitter. Cependant, il est lent (il faut 3 à 4 secondes pour charger la page maintenant). Pourquoi est-ce si lent?RSS Analyseur pour Twitter est lent - pourquoi?

Voici comment je l'utilise.

require_once 'rss_php.php'; //see link above 

$rss = new rss_php; 

$rss->load('http://twitter.com/statuses/user_timeline/XXXXXX.rss'); 

$feed = $rss->getItems(false, 1); 

echo $feed[0]['title']; 
echo $feed[1]['title']; 

je reçois cet avis PHP:

Avis: Undefined variable: tempNode dans C: \ wamp \ www \ rss_php.php en ligne 137

I Je ne sais pas pourquoi puisque cela fonctionne, la ligne 137 est cette ligne:

return $tempNode; 

Merci à tous pour votre aide. J'apprécie tous les conseils pour accélérer ce processus.

+0

où définissez-vous/set '$ tempNode'? – Dutchie432

+0

Vous pouvez résoudre PHP en ajoutant $ tempNode = array(); avant la ligne foreach sur 102. –

+0

Cela fonctionne pour moi très bien. Pas lent du tout. – galambalazs

Répondre

2

Tout d'abord, la ligne 110 de votre pastbin est d'attribuer une variable qui n'a jamais été déclarée. En tant que tel, toute demande ou assignation à une variable non déclarée le fera. De ce que je vois, il devrait être aussi simple que d'ajouter $tempNode = Array(); juste en dessous de l'appel de fonction de la méthode extractDOM.

Ensuite, comme il s'agit d'un script de quelqu'un d'autre, je vous recommande de leur demander ce que vous pouvez faire pour améliorer les performances. De ce qui est dans le passé, je ne vois rien de compliqué, et je ne vous vois pas utiliser la bibliothèque de façon incorrecte, mais finalement, ils sauraient mieux.

+0

Je l'ai fait maintenant, mais la chose étrange que je reçois la même erreur, mais le numéro de ligne pointe vers le même endroit qui est un '}' que tout s'est déplacé vers le bas! – Abs

3

L'extraction de contenu à partir d'un emplacement distant peut potentiellement entraîner des problèmes de chargement plutôt laids.

Essayez d'enregistrer le contenu du flux RSS dans un fichier local et de voir si le problème persiste lors du chargement à partir d'un lecteur local. Si cela résout le problème, vous devriez chercher à mettre en cache le contenu du flux de temps en temps. Se débarrasser de ce retour $ tempNode;

+0

Si tout le reste échoue, le profilage de votre script avec des outils comme Xdebug pourrait vous aider à trouver la cause première. – K4emic

-2

L'avis est facile, mais pas votre problème, il doit juste être défini sur le forloop dans cette fonction extractDOM.

L'optimisation de votre code PHP est une tâche importante. Je suppose que l'appel api est la plupart du temps, mais si vous voulez essayer et d'accélérer votre code un peu je regarderais dans des tutoriels sur la façon de le faire:

http://ilia.ws/archives/12-PHP-Optimization-Tricks.html

http://progtuts.info/55/php-optimization-tips/

http://hungred.com/useful-information/php-micro-optimization-tips/

+0

Pourquoi était-ce downvoted? Je ne suis pas d'accord avec sa première partie, mais la dernière semble être bonne. –

+0

Ma réponse est toujours correcte. Un avis PHP est juste un avertissement. Ce n'est pas parce que c'est un mauvais code que ça ne marche pas. La question portait sur la performance. – wajiw

0

Après la ligne 138 en rss_php.php (v.1 Version gratuite) fichier collez:

... 
if (!isset($tempNode)){ 
    $tempNode = null; 
} 
return $tempNode; 
... 

Profitez

;)