Ben kullanıcı zaman çizelgesi tweets ile basit bir php oluşturulan twitter kutusu ile bir site üzerinde çalışıyorum user_timeline rss feed çekti ve yükleri azaltmak için yerel bir dosyaya önbelleğe ve twitter iner için yedek olarak. Bu konuda önbelleğe dayalı: http://snipplr.com/view/8156/twitter-cache/. Tüm dün iyi çalışıyor gibi görünüyordu, ama bugün ben önbellek dosyası boş olduğunu keşfetti. Silmeden sonra tekrar yeni bir dosya oluşturulur loading.
Ben kullanıyorum kod aşağıda. Bunu ben zaten besleme görüntülemek ve muhtemelen bir şey önemli yukarı berbat için kullandığı ne işe almak için denemek için düzenlenmiş ettik.
The changes I made are the following (and I strongly believe that any of these could be the cause): - Revised the time difference code (the linked example seemed to use a custom function that wasn't included in the code)
"Fwrites" den "serialize" fonksiyonunu kaldırıldı. Ben ekran kodu yüklendikten sonra unserialize nasıl çözemedim çünkü bu tamamen bir. Ben dürüst nasıl çalıştığını çalış veya seri rolünü anlamıyorum, bu yüzden ben sadece kod ikinci bölümünde serisini nerede / nasıl anlamak gerekir durum buysa ben onu içeri tutmuş olmalı eminim çok incelenir olabilir.
Sadece benim özgün tweet ekran kodu önbellek dosyasını yükleme lehine $ rss değişkeni kaldırıldı.
Yani, burada kullanılan kod ilgili bölümleri şunlardır:
<?php
$feedURL = "http://twitter.com/statuses/user_timeline/#######.rss";
// START CACHING
$cache_file = dirname(__FILE__).'/cache/twitter_cache.rss';
// Start with the cache
if(file_exists($cache_file)){
$mtime = (strtotime("now") - filemtime($cache_file));
if($mtime > 600) {
$cache_rss = file_get_contents('http://twitter.com/statuses/user_timeline/75168146.rss');
$cache_static = fopen($cache_file, 'wb');
fwrite($cache_static, $cache_rss);
fclose($cache_static);
}
echo "<!-- twitter cache generated ".date('Y-m-d h:i:s', filemtime($cache_file))." -->";
}
else {
$cache_rss = file_get_contents('http://twitter.com/statuses/user_timeline/#######.rss');
$cache_static = fopen($cache_file, 'wb');
fwrite($cache_static, $cache_rss);
fclose($cache_static);
}
//END CACHING
//START DISPLAY
$doc = new DOMDocument();
$doc->load($cache_file);
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
// the rest of the formatting and display code....
}
?>
ETA 6/17 Hiç kimse yardımcı olabilir ...?
Aksi takdirde ben önbellek dosyası yeniden yazılır, bu her on dakikada bir oluyor gerektiğini düşünün, ama bu olmaz çünkü twitter aşağı olduğunda, iyi bir birinin üzerine boş bir önbellek dosyası yazma ile ilgili bir şey var düşünüyorum Sık sık.
Ben dosya üzerine yazmak için kaç yaşında denetler kısmına aşağıdaki değişiklik yapılmıştır:
$cache_rss = file_get_contents('http://twitter.com/statuses/user_timeline/75168146.rss');
if($mtime > 600 && $cache_rss != ''){
$cache_static = fopen($cache_file, 'wb');
fwrite($cache_static, $cache_rss);
fclose($cache_static);
}
O and rss sayfasından alınan gerçek içerik var üzerinde on dakika eski eğer ... şimdi, sadece dosyayı yazacağız. Bu işe yarayacak mı?