У меня есть сценарий, который запускается каждые две минуты для приложения «Tweet-getter». В двух словах он помещает твиты в Facebook. Время от времени он икает и, несмотря на мою проверку ошибок, постоянно перечитывает старые твиты каждые две минуты (цикл его запускается как задание cron). У меня есть log.txt, который теоретически поможет мне определить, что здесь происходит, но проблема заключается в том, что он не записывается каждый раз, когда выполняется задание. Вот код:..Непредсказуемая запись файла журнала в 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
?>
Таким образом, в теории лог строку «в понедельник 24 августа 2009 10:41:32 PM уравнивает, так как # 3326415954. обновлен до # 3526415953. 8 пользователей Принимал 0.086057 миллисекунды . Добавлено 14 из 20 твитов. " линий. Иногда, хотя, он пропустит два или три часа за раз, и в этот период он будет «спамить» страницы людей с помощью нескольких копий одного и того же твита. Я не могу сказать, что может нарушить мой код, но мое подозрение - плохой XML из твиттера. В целом это относительно низкий трафик на моем конце, поэтому я сомневаюсь, что я перегружаю свой сервер или что-то еще. Теперь log.txt - 50 кбайт, и последний «сломался» на ~ 35 кб, поэтому это не огромный файл, замедляющий его ... Любые мысли будут оценены!