Page 1 sur 2

Récupération du dernier tweet, comportement instable

Posté : 14 juil. 2010, 12:23
par m4cbeth
Bonjour,

MàJ. (18/07/2010 à 1:07) le script refuse toujours de fonctionner sur mon mutualisé OVH (alors qu'il fonctionne parfaitement en local).
On est là : Détails du code et du problème (plus bas dans ce thread).

Toute aide est la bienvenue ;)

Re: Récupération du dernier tweet, comportement instable (cURL)

Posté : 15 juil. 2010, 00:42
par stealth35
pourquoi ne pas utiliser simpleXML ?

Re: Récupération du dernier tweet, comportement instable (cURL)

Posté : 15 juil. 2010, 13:20
par m4cbeth
Bonjour stealth35 et merci pour ta réponse,

Mes besoins sont moindre ici et j'ai d'autre script qui "parsent" le xml de la même qui fonctionnent très bien. C'est la première fois que je rencontre ce problème et je ne parviens vraiment pas à en déterminer l'origine. :(

Re: Récupération du dernier tweet, comportement instable (cURL)

Posté : 15 juil. 2010, 13:24
par stealth35
Bonjour stealth35 et merci pour ta réponse,

Mes besoins sont moindre ici et j'ai d'autre script qui "parsent" le xml de la même qui fonctionnent très bien. C'est la première fois que je rencontre ce problème et je ne parviens vraiment pas à en déterminer l'origine. :(
justement si ils sont moindre autant utilisé simpleXML ton code sera réduis a 2 lignes, je comprend pas non plus pourquoi tu utilise curl ? un simple file_get_content fera la même chose :wink:

Re: Récupération du dernier tweet, comportement instable (cURL)

Posté : 17 juil. 2010, 17:03
par m4cbeth
Salut,
voilà le nouveau code qui utilise simple xml comme tu le suggérais, plus simple en effet :)

Problème : ça fonctionne très bien en local, plus du tout en ligne :(
<?php

$dir      = 'tw_cache/';
$fileName = 'latest.php';
$latest   = $dir . $fileName;

$update     = @filemtime($latest);
$udpateFreq = $update + 600; // en secondes

$target  = 'http://twitter.com/statuses/user_timeline/783214.rss'; // source

$res = @simplexml_load_file($target);

if ((file_exists($latest)) && (time() < $udpateFreq)) // si le cache existe et n'est pas périmé
{
   $fileContent = fopen($latest, 'r');
   $latestTweet = fgets($fileContent);
   fclose($fileContent);
	
   echo $latestTweet;
}
elseif ($res) // sinon, si tweeter est up
{
   $tweet = str_replace('twitter: ', '', $res->channel->item[0]->title);
   $tweet = preg_replace('# ((?:https?|ftp)://\S+?)(?=[[:punct:]]?(?:\s|\Z)|\Z)#', ' <a href="$1">$1</a>', $tweet); // replacing url by link
	
   $link  = $res->channel->item[0]->link;
   $date  = date('d/m/Y à H:i', strtotime($res->channel->item[0]->pubDate));
	
   $latestTweet = '<div id="latesttweet"><p>' . $tweet . '<br/>Posté le <a href="' . $link . '"><span class="date">' . $date . '</span></a></p></div>';
   echo $latestTweet;
	
   // si le repertoire de cache n'existe pas, on le cree
   if (!is_dir($dir)) { mkdir($dir, 0705); }

   // creation du fichier cache
   $fileContent = fopen($latest, 'w+');
   fputs($fileContent, $latestTweet);
   fclose($fileContent);
}
else {
   echo '<div id="latesttweet"><p>Tweet ! Tweet !</p></div>';
}

?>
Et les erreurs que j'obtiens :
Warning: simplexml_load_file(http://twitter.com/statuses/user_timeline/783214.rss) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /homez.42/username/www/includes/latest-tweet.php on line 12

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://twitter.com/statuses/user_timeline/783214.rss" in /homez.42/username/www/includes/latest-tweet.php on line 12

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 19:10
par stealth35
faut mettre la directive allow_url_fopen sur On

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 19:25
par m4cbeth
Salut et à nouveau, merci pour ta réponse.

Je suis chez OVH (en mutu) et je n'ai pas accès à php.ini, j'ai donc tapé un "SetEnv ALLOW_URL_FOPEN 1" dans un .htaccess mais le problème persiste :(

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 19:27
par stealth35
Salut et à nouveau, merci pour ta réponse.

Je suis chez OVH (en mutu) et je n'ai pas accès à php.ini, j'ai donc tapé un "SetEnv ALLOW_URL_FOPEN 1" dans un .htaccess mais le problème persiste :(
normalement un php_flag suffis dans ton .htaccess

Code : Tout sélectionner

php_flag allow_url_fopen 1

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 20:08
par m4cbeth
L'ajout du flag fait quant à lui complètement planter l'hosting "(500) Internal Server Error".

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 20:12
par stealth35
L'ajout du flag fait quant à lui complètement plante l'hosting "(500) Internal Server Error".
essaye avec un ini_set, t'as quelle version de php ?

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 21:10
par m4cbeth
> essaye avec un ini_set

sous la forme ini_set('allow_url_fopen', 1) ?

> t'as quelle version de php ?

PHP Version 5.2.13 et d'après phpinfo(), allow_url_fopen est "On" que ce soit pour la valeur locale ou maître

Image

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 21:21
par stealth35
le serveur n'apprécie pas, ca qui est normale tu dois normalement utilisé l'API twitter qui est fais officiellement pour, tu peux toujours faire la bidouille du cURL et faire simplexml_load_string, mais je te le conseil pas :wink:

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 21:37
par m4cbeth
C'est la raison pour laquelle j'utilisais cURL au départ, pour pouvoir modifier le referer et l'user agent ;-)
Par contre je ne comprends pas pourquoi, dès lors qu'ils appliquent un filtrage, ça fonctionne en local (que ce soit via curl avec un faux referer ou directement simplexml_load_file).

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 21:45
par stealth35
après vérification il attend une requête en utf-8 :wink:

Re: Récupération du dernier tweet, comportement instable

Posté : 17 juil. 2010, 22:25
par m4cbeth
Tout est envoyé en utf8 normalement (fichier encodé en utf8, charset en utf8 aussi pour le document) :(