Size soru anlamak, temelde bir besleme agregator sitede çalışıyoruz?
Aşağıdaki yapabilirsiniz; (örneğin) her 1 hor serinletici başlayın. Bazı yem anough girdileri varsa - girişler arasındaki ortalama süreyi hesaplamak. Sonra bu yem alma için bir zaman aralığı olarak bu aralığı kullanabilirsiniz.
Site son 7 günde 7 yayınlanmış makaleleri Örneğin, - bunu her 24hours (1day) beslemeleri getirebilir.
Ben bu ortalama süreyi hesaplamak zaman ben (çok nadiren almak için değil emin olmak için) 2 bölün birkaç değişiklik ile bu algoritma kullanır. Sonuç en az 60 dakika ise - ben 1 saate aralığını ayarlamak veya ben 24 saat olarak ayarlayın 24 daha büyük.
Bunun gibi, örneğin, bir şey:
public function updateRefreshInterval() {
$sql = 'select count(*) _count ' .
'from article ' .
'where created>adddate(now(), interval -7 day) and feed_id = ' . (int) $this->getId();
$array = Db::loadArray( $sql );
$count = $array[ '_count' ];
$interval = 7 * 24 * 60 * 60 / ( $count + 1 );
$interval = $interval / 2;
if( $interval < self::MIN_REFRESH_INTERVAL ) {
$interval = self::MIN_REFRESH_INTERVAL;
}
if( $interval > self::MAX_REFRESH_INTERVAL ) {
$interval = self::MAX_REFRESH_INTERVAL;
}
Db::execute( 'update feed set refresh_interval = ' . $interval . ' where id = ' . (int) $this->getId() );
}
Tablo 'yenilenme' besleme son kez yenilendi ve 'yenileme_aralığı' aynı yem iki fetches arasındaki istenilen zaman aralığıdır oldu zaman etiketi olan, 'yem' edilir.