Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » DLE 10.3 - доработка модуля RSS-информеров.

DLE 10.3 - доработка модуля RSS-информеров.


 GrayZOR    09.08.2016    Стол заказов    1545    2 комментария

Привет народ.
Нужно решить один давно наболевший вопрос.
Приблуда с кэшем rss-информеров, сайт падает.
Сейчас я подсобрал денжат и хочу что-бы мне тут решили вопрос

Подробнее можно почитать на офиц. форуме DLE:
http://forum.dle-news.ru/topic/69234-сайт-ложится-при-первом-просмотре-сайта-после-действий-в-админке/#comment-345034

Возможно, что тему удастся посмотреть только после авторизации, если нет, я вам вытащу ее сюда, напишите об этом в заявках.

Возможно какие-то настройки php/apache в этом виноваты.
Но авторы DLE написали, что вина всему кэш-информеров, ну не рассчитан двиг на сотню информеров, пилит это стандартно в функционал им не нужно, т.е. это не востребовано всеми, я наверное один, кто приспособил двиг так под эти цели. Проблему пытался решить опытный программист, автор не скольких десятков модулей для DLE, думаю длешникам его имя известно. Но не будем писать о нем тут. Не в нем суть! Что он сделал или чего он не сделал:
Он переделал модуль информеров, сделал обновляемый кэш отдельным скриптом, сайт стал чуть лучше работать, но сайт все ровно падает. Вычислить после каких действий он падает не получилось, это будет ваша задача. Если при стандартном модуле rss-информеров сайт падал после добавление информера, точнее, как добавлю, после первого посещения сайта. Причем, чем больше кол-во инфов, тем больше он лежал. Я просил того программера посмотреть, найти причину и устранить, но он так занят, что не взялся за это. Пару раз накормил завтраком, а потом я уже сыт был и не больше не ходил к нему в столовую.

В общем, что у нас есть:
Сайт DLE 10.3
Виртуальный вебсервер на Centos 6.
Доработанный функционал модуля rss-информеров.
Модуль есть в упаковке с инструкциями.

Что нужно сделать, открыть сайт и исследовать, чем конкретно вызывается падание сайта, откатить на стандартный модуль по инструкции и доработать стандартный или доработать существующий, перенастроить сервер или поменять его, может ос сменить на debian или Ubuntu.

По цене будем договариться, работа предпочтительна через гаранта. А так же в качестве гарантий, у меня есть формальный аттестат вебмани 170БЛ, регистрация от 2007 года, я есть на многих крупных форумах со своими услугами, где есть отзывы на меня и мои услуги, все это я предоставлю, если нужно. По цене, я попрошу вас отнестись к этому адекватнее, проект у меня не коммерческий, я такой же фрилэнсер, как и вы. Спасибо.

2 комментария

HELP-ROOT
Юзер

HELP-ROOT - 14 августа 2016 22:01 -

В личку напишите

MozgFx
Юзер

MozgFx - 2 сентября 2016 16:16 -

Если никто не поможет может вместо стандартного информера использовать через Include php вот такой:
<?php

include_once("write_rss.php");//подключаем файл с функцией вывода RSS-новостей

//адресс новостей (URL-адрес RSS потока)
$url_rss="http://www.linedmk.com/rss.php";

//количество выводимых новостей
$kol_print_news=10;
//имя файла для хранения RSS-новостей на локальном сервере (то есть кэш-файл)
$file_rss="cache_rss.xml";
//время обновления, в часах
$hclock=1;

print_rss($url_rss,$file_rss,$hclock,$kol_print_news);//вызываем функцию вывода RSS-новостей

?>


Исходный код самого write_rss.php

<?php

function print_rss($url_rss,$file_rss,$hclock,$kol_print_news)
  {
    //$url_rss - URL-адрес RSS потока
    //$file_rss - адресс файла для хранения RSS-новостей
    //$hclock - время обновления, в часах
    //$kol_print_news - количество выводимых новостей
    
    
    
    if (!file_exists($file_rss) || ( filemtime($file_rss) + $hclock*60*60 < time() ) )//если файл не сохраняли, то сохраняем на локальном сервере или если существует, то проверяем устарел ли файл (не более Х часов назад он записан)
      {
       if (@!copy ($url_rss,$file_rss))
         return (false);
      
       $text_rss=file($file_rss);
       $text_rss=implode("",$text_rss);
       //преобразуем кодировку данных
       //если не нежно конвертировать кодировку, то комментируем ниже идущее условие или редактируем
       if (preg_match('/<?xml[^>]+encoding[\s]*=[\s]*("|\')windows-1251("|\')[^>]+?>/i', $text_rss))
         {
          
          $text_rss = iconv("cp1251", "utf-8", $text_rss);
          file_put_contents($file_rss, $text_rss);//пишем данные обратно в файл
          
         }
      }
    
    
    $text_rss=file($file_rss);
    $text_rss=implode("",$text_rss);
    
    $url_image = "";
    $image_is=preg_match("#<image>(.*?)</image>#is",$text_rss,$image_m);
    if ( $image_is )
      {
      
       $image_url_is = preg_match("#<url>(.*?)</url>#is",$image_m[0],$image_t);
      
       if ( $image_url_is )
         $url_image = $image_t[1];
      }
    
    $mas_item=array();
    preg_match_all("#<item>.*?</item>#is",$text_rss,$mas_item);
    
    $one_item=array();
    $t="";
    
    $t.=( $url_image ? "<div><img src='".$url_image."'  ></div>" :"");
    
    $kol=0;
    if (sizeof($mas_item)>0)
      {
      
       foreach ($mas_item[0] as $one_item)
         {
          
          $date = "";
          $kol++;
          $t_is=preg_match("#<title>(.*?)</title>#is",$one_item,$title);
          $l_is=preg_match("#<link>(.*?)</link>#is",$one_item,$link);
          $d_is=preg_match("#<description>(.*?)</description>#is",$one_item,$description);
          
          $date_is=preg_match("#<pubDate>(.*?)</pubDate>#is",$one_item,$date_t);
          
          if ($t_is && $l_is)
            {
             $title[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$title[1]);
             $link[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$link[1]);
             $description[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$description[1]);
            
             if ( $date_is )
               $date = strtotime($date_t[1]);
            
            
             $t.="<div><a href='".$link[1]."' target='_blank'>".$title[1]."</a>
              <br>"
              .$description[1]
              .( $date ? "<br>".date("d.n.Y",$date) : "" )
              ."</div>";
            
            }
          if ($kol >= $kol_print_news) break;
         }
      }

    echo ($t);

    
    return (true);
  }



Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх