Вышла новая версия исправляющая эту и еще несколько огрех
Изменения в версии 2.1.0
- Улучшена безопасность
- Добавлено кэширование
- Устранены отдельные недочёты ( с TOPIC_TITLE в том числе)
- Добавленый аддоны
- Добавлено английское описание
- автоподдержка языка.
Кроме того, самое главное, сделано кэширование основного rss
Если rss вызывается без параметров, то результат может сохраняться на диске и не считаться следующий раз, что позволяет еще больше снизить нагрузку на сервер.
Для этого нужно установить на папку cache права доступа 777 и в начале rss.php:
НАЙТИ
define('CACHE_TO_FILE', false);
ИЗМЕНИТЬ НА
define('CACHE_TO_FILE', true);
Добавлено спустя 1 час 6 минут 4 секунды:
Для тех, у кого кэш включен может полезно будет следующее:
Код: Выделить всё
<?php
$define('USE_GZIP',false);
$cache_file="УКАЖИТЕ ЗДЕСЬ ПОЛНЫЙ ПУТЬ/cache/rss_feed.xml";
$cachefiletime=@filemtime($cache_file);
$MyETag='"RSS'.gmdate("YmdHis", $cachefiletime).$verinfo.'"';
$MyGMTtime=gmdate("D, d M Y H:i:s", $cachefiletime)." GMT";
$do_gzip_compress = FALSE;
if(isset($HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'])) {
if ($HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'] == $MyETag) {
header("HTTP/1.1 304 Not Modified");
exit;
}
}
else {
if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE'])) {
if ($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE'] == $MyGMTtime) {
header("HTTP/1.1 304 Not Modified");
exit;
}
}}
if (USE_GZIP)
{
$phpver = phpversion();
$useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT;
if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
{
if ( extension_loaded('zlib') )
{
ob_start('ob_gzhandler');
}
}
else if ( $phpver > '4.0' )
{
if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
{
if ( extension_loaded('zlib') )
{
$do_gzip_compress = TRUE;
ob_start();
ob_implicit_flush(0);
header('Content-Encoding: gzip');
}
}
}
}
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
{
header ('Cache-Control: no-cache, pre-check=0, post-check=0, max-age=0');
}
else
{
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header("Last-Modified: ".$MyGMTtime);
header("Etag: ".$MyETag);
header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");
header ('Content-Type: text/xml; charset='.$lang['ENCODING']);
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
{
header ('Cache-Control: no-cache, pre-check=0, post-check=0, max-age=0');
}
else
{
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header("Last-Modified: ".$MyGMTtime);
header("Etag: ".$MyETag);
header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");
header ('Content-Type: text/xml; charset='.$lang['ENCODING']);
readfile($cache_file);
if ( $do_gzip_compress )
{
$gzip_contents = ob_get_contents();
ob_end_clean();
$gzip_size = strlen($gzip_contents);
$gzip_crc = crc32($gzip_contents);
$gzip_contents = gzcompress($gzip_contents, 9);
$gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $gzip_contents;
echo pack('V', $gzip_crc);
echo pack('V', $gzip_size);
}
exit;
?>
Сия программка, размещенная где-нибудь на сайте может служить источником данных для разных роботов. Время выполнения её около 0.001 сек.