J'ai un script qui s'exécute toutes les deux minutes pour une application "Tweet-getter". En un mot, il met des tweets sur Facebook. De temps en temps, il hoquet et, malgré ma vérification d'erreur, relance les anciens tweets en continu, toutes les deux minutes (le cycle de celui-ci étant exécuté comme un travail cron). J'ai un log.txt qui en théorie m'aiderait à déterminer ce qui se passe ici, mais le problème est qu'il n'est pas écrit à chaque fois que le travail se déroule. Voici le code:..Écriture de fichier journal imprévisible en PHP
<?php
$start_time = microtime();
require_once //a library and config
$facebook = new Facebook($api_key, $secret);
get_db_conn(); //returns $conn
$hold_me = mysql_fetch_array(mysql_query("SELECT * FROM `stats`"));
$last_id_posted = $hold_me[0]; //the status # of the most recently posted tweet
$me = "mytwittername";
$ch = curl_init("http://twitter.com/statuses/friends_timeline.xml?since_id=$last_id_posted");
curl_setopt($ch, CURLOPT_USERPWD, $me.":".$pw);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$xs = curl_exec($ch);
$data = new SimpleXMLElement($xs);
$latest_tweet_id = $last_id_posted;
$uid = get_uid(); //returns an array of facebookID->twittername
$user_count = count($uid);
curl_close($ch);
$total_tweets = 0;
$posted_tweets = 0;
foreach ($data->status as $tweet) {
$name = strtolower($tweet->user->screen_name);
if (array_key_exists($name, $uid)) {
$total_tweets += 1;
// $name = Twitter Name
$message = $tweet->text;
$fbid = $uid[$name];
theposting($name,$message,$fbid); //posts tweet to facebook
$this_id = $tweet->id;
if ($this_id > $latest_tweet_id) {
$latest_tweet_id = $this_id;
}
}
}
mysql_query("UPDATE stats SET lasttweet='$latest_tweet_id'");
commit_log(); //logs to a txt file how many tweets posted, how many users, execution duration, and time of execution
?>
Donc, en théorie, le journal est une chaîne de « Lundi 24 Août 2009 d'22:41:32 a tous appelés depuis # 3326415954. à jour # 3526415953. 8 utilisateurs A pris 0.086057 millisecondes Publié 14 sur 20 tweets. " lignes. Parfois, cependant, il va sauter deux ou trois heures à la fois, et dans ce laps de temps il va "spammer" les pages facebook des gens avec plusieurs copies du même tweet. Je ne peux pas dire ce qui pourrait casser mon code, mais ma suspicion est mauvaise XML de Twitter. Dans l'ensemble, il est relativement faible trafic de ma part, donc je doute que je surcharge mon serveur ou quoi que ce soit. Le log.txt est 50kb en ce moment, et le dernier "cassé" à ~ 35kb, donc ce n'est pas un énorme fichier qui le ralentit ... Toutes les pensées seraient appréciées!