We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18062
    • 15 Posts
    Доброй ночи.
    На сайте делал дружественные url, с выводом по псевдониму.
    сайт начал глючить, причем дружественные страницы отключил, но сайт продолжает глючить.
    Очень часто ругается на подключение к базе mysql. Иногда срабатывает и выдает все как надо, иногда нет.
    Страницы грузятся очень долго. Причем даже админка
    Иногда сайт не грузится и ругается на БД, но проходит некоторое время и он сам как бы обновляется и отображает содержимое.

    В отчетах в просмотре событий есть ошибки:
    С периодичностью parser
    при нажатии на ошибку выдает
    Failed to create the database connection!
    . Please run the MODx install utility
    

    либо если подключился к ошибке выводит следующее:
    « MODx Parse Error »
    MODx encountered the following error while attempting to parse the requested resource:
    « Failed to create the database connection! »
    
    Parser timing
      MySQL: 	0,0000 s	(0 Requests)
      PHP: 	1292102459,3080 s	 
      Total: 	1292102459,3080 s
    


    Другие ошибки все принадлежат MiniNEWS - Snippet:
    ругается так:
    date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 'MSK/3.0/no DST' instead
    

    дальше показывает новости, на сколько я понимаю те, в каких ошибки.

    [function.date]
    активна, при нажатии на нее появляется следующее:
    The requested URL /manager/function.date was not found on this server.
    

    Что посоветуете? huh у меня паника :’(
      • 18062
      • 15 Posts
      при загрузке в IE
      выводится следующее
      « MODx Parse Error »
      MODx encountered the following error while attempting to parse the requested resource: 
      « PHP Parse Error » 
        
      PHP error debug 
        Error:  mysql_connect() [function.mysql-connect]: Too many connections   
        Error type/ Nr.:  Warning - 2   
        File:  /srv/www/vhosts/mysite.ru/httpdocs/manager/includes/extenders/dbapi.mysql.class.inc.php   
        Line:  89   
        Line 89 source:  if (!$this->conn = ($persist ? mysql_pconnect($host, $uid, $pwd) : mysql_connect($host, $uid, $pwd, true))) {    
        
      Parser timing 
        MySQL:  0.0000 s (0 Requests) 
        PHP:  0.9666 s   
        Total:  0.9666 s   
      
      « MODx Parse Error »
      MODx encountered the following error while attempting to parse the requested resource: 
      « Failed to create the database connection! » 
        
      Parser timing 
        MySQL:  0.0000 s (0 Requests) 
        PHP:  0.9666 s   
        Total:  0.9666 s 
      

      дальше
      « MODx Parse Error » выводится постоянно, но с разным временем в ошибке
      PHP: 1.4342 s
      Total: 1.4342 s
      дальше
      PHP: 1.4344 s
      Total: 1.4344 s
      и т.д.
        • 9085
        • 630 Posts
        Error: mysql_connect() [function.mysql-connect]: Too many connections
        Хостинг сменить. Или сервер настраивать..
        Не совсем понятно, сколько народу на сайте, но при попытке подключения к MySQL вываливается "нехватка подключений"

        По поводу ошибок функций даты-времени - решение тут
          Правильно заданный вопрос повышает вероятность получения нужного ответа.
          Что-то не работает? Загляните в лог ошибок!
          Есть проблема? "Локализуйте" её!
          Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
          • 18062
          • 15 Posts
          Ошибка parser исчезла и больше не появляется, правда я отменил все изменения. Буду включать и смотреть.
          Нагрузки на сервер так таковой не было. За день заходит человек 30, а уж в час ночи я думаю был один.
          Предолагаю, что были работы на сервере.

          По поводу ошибки снипета...
          В .htaccess раскоментировал строчку
          php_value date.timezone "Europe/Moscow"

          но ошибка не пропала.
            • 9085
            • 630 Posts
            Quote from: malartem at Dec 12, 2010, 03:01 AM

            Нагрузки на сервер так таковой не было. За день заходит человек 30, а уж в час ночи я думаю был один.
            Возможно, к этому БД-серверу коннектятся и другие сайты..

            Quote from: malartem at Dec 12, 2010, 03:01 AM

            По поводу ошибки снипета...
            В .htaccess раскоментировал строчку
            php_value date.timezone "Europe/Moscow"

            но ошибка не пропала.
            Кэш чистили?
              Правильно заданный вопрос повышает вероятность получения нужного ответа.
              Что-то не работает? Загляните в лог ошибок!
              Есть проблема? "Локализуйте" её!
              Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
              • 18062
              • 15 Posts
              Конечно
              Чистка кеша и сброс ошибок обязательна...
                • 18062
                • 15 Posts
                На всякий код снипета...
                <?php
                /*Проверка поля для сортировки*/
                        if(!isset($sort))$sort = 'pub_date';
                /*Проверяем поля:*/         
                                if(!isset($fields))
                                {
                                $fields = array('id','pagetitle','description','alias','menutitle','longtitle','content','introtext','pub_date');
                                }ELSE{
                                $fields = explode(",",$fields);
                                }
                /*Проверка направления сортировки*/
                        if(!isset($dir))$dir = 'DESC';
                        
                /*Проверка переменной формата даты*/
                        if(!isset($data))$data = 'd.m.Y';
                        
                /*Проверка ID родительского документа*/
                        if(!isset($id))$id = $modx->documentIdentifier;
                                
                // Проверка TV?
                
                                if(!isset($tv_enable))$tv_enable=false;
                
                /*Проверка шаблона*/
                        if(isset($tpl)){
                        $chunk = $modx->getChunk($tpl);
                        }ELSE{
                        $chunk = '<dl class="mininews"><dt><a href="[~[~+id+~]~]">[~+pagetitle+~]</a>  - [~+pub_date+~]</dt><dd>[~+introtext+~]</dd></dl>';
                        }
                /*Готовим к использованию поля - переводим массив в тест и создаем массив плейсхолдеров*/       
                                for ($i = 0; $i < sizeof($fields); $i++) {
                                        if(isset($fields_txt)){
                                                        $fields_txt = $fields_txt.','.$fields[$i];
                                                }ELSE{
                                                        $fields_txt =$fields[$i];
                                                }
                                $place_arr[$i] = '[~+'.$fields[$i].'+~]';
                        } 
                        
                /*Запрос в API*/        
                        $child = $modx->getActiveChildren($id,$sort,$dir,$fields_txt);
                        
                /*Обработка даты*/
                        foreach($child as $key => $value){
                                $data = date("d m Y",$value["pub_date"]);
                                $data_arr = explode(" ",$data);
                                switch ($data_arr[1]) {
                                  case 1: $data = $data_arr[0] . ' января ' . $data_arr[2] ; break;
                                  case 2: $data = $data_arr[0] . ' февраля ' . $data_arr[2] ; break;
                                  case 3: $data = $data_arr[0] . ' марта ' . $data_arr[2] ; break;
                                  case 4: $data = $data_arr[0] . ' апреля ' . $data_arr[2] ; break;
                                  case 5: $data = $data_arr[0] . ' мая ' . $data_arr[2] ; break;
                                  case 6: $data = $data_arr[0] . ' июня ' . $data_arr[2] ; break;
                                  case 7: $data = $data_arr[0] . ' июля ' . $data_arr[2] ; break;
                                  case 8: $data = $data_arr[0] . ' августа ' . $data_arr[2] ; break;
                                  case 9: $data = $data_arr[0] . ' сентября ' . $data_arr[2] ; break;
                                  case 10: $data = $data_arr[0] . ' октября ' . $data_arr[2] ; break;
                                  case 11: $data = $data_arr[0] . ' ноября ' . $data_arr[2] ; break;
                                  case 12: $data = $data_arr[0] . ' декабря ' . $data_arr[2] ; break;
                                  default: $data = 'Date error!';
                                }
                                $child[$key]["pub_date"]= $data;
                        }
                /*Устанавливаем количество интераций*/
                                if(!isset($total))$total = sizeof($child);
                                if($total > sizeof($child))$total = sizeof($child);
                
                                
                // Выдергиваем TV
                        if($tv_enable==true){
                
                        // Формируем список всех ID
                                for ($i = 0; $i < $total; $i++){
                                $doc = $child[$i];
                                if(isset($id_arr))
                                        {
                                        $in = $id_arr.','.$doc['id'];
                                        $id_arr = $in;
                                        }ELSE{
                                        $id_arr= $doc['id'];
                                        }
                                
                                }
                                // Вытаскиваем префикс
                                $dbprefix = $modx->db->config['table_prefix'];
                
                                // Формируем запрос к получению TV
                                
                                
                                if(isset($tv_name)){
                                        $tv_que=str_replace(',','\',\'',$tv_name);
                                        $q_i=' AND '.$dbprefix.'site_tmplvars.name IN (\''.$tv_que.'\')';
                                }ELSE{
                
                                }
                                $q='SELECT '.$dbprefix.'site_tmplvar_contentvalues.value, '.$dbprefix.'site_tmplvars.name, '.$dbprefix.'site_tmplvar_contentvalues.contentid  FROM '.$dbprefix.'site_tmplvar_contentvalues INNER JOIN '.$dbprefix.'site_tmplvars ON '.$dbprefix.'site_tmplvar_contentvalues.tmplvarid = '.$dbprefix.'site_tmplvars.id WHERE '.$dbprefix.'site_tmplvar_contentvalues.contentid IN ('.$id_arr.')'.$q_i.'';
                                
                                // Получаем TV
                                $result = $modx->db->query($q);
                                for ($tv_ar=array(); $row=mysql_fetch_assoc($result);$tv_ar[]=$row);
                
                        }
                                
                /*Основной цикл*/
                        for ($i = 0; $i < $total; $i++) {
                                $doc = $child[$i];
                                                
                                                /*Поиск и замена плейсхолдеров*/
                                $parce = str_replace($place_arr,$doc,$chunk);
                                                                
                                                /*Создание и добавление ссылки*/
                                $url = $modx->makeUrl($doc['id']);
                                $parse_with_links = str_replace('[~[~+id+~]~]',$url,$parce);
                                                
                                                // Формируем TV
                                                if($tv_enable==true){
                                                        foreach ($tv_ar as $value)
                                                        {
                                                                if ($value['contentid']==$doc['id'])
                                                                {
                                                        
                                                                        $tv_place='[~+'.$value[name].'+~]';
                                                                
                                                                        if(isset($parse_with_tv))
                                                                        {
                                                                                $str_i = str_replace($tv_place,$value[value],$parse_with_tv);
                                                                                $parse_with_tv = $str_i;
                                                                        }ELSE{
                                                                                $parse_with_tv = str_replace($tv_place,$value[value],$parse_with_links);
                                                                }
                                                        
                                                                }
                                                        }
                                                echo $parse_with_tv;
                                                }ELSE{
                                                echo $parse_with_links;
                                                }
                                                
                                
                                                /*УСЁ!!!*/
                                
                         unset($parse_with_tv);               
                        }
                /*удаляем переменные для возможности многократного вызова*/     
                unset($id, $sort, $dir, $fields_txt, $data, $tpl, $tv_name, $total, $i, $int, $tv_name,$tv_enable);
                ?>
                  • 9085
                  • 630 Posts
                  1. уберите php-разметку.. русские буквы читаться будут
                  2. лучше текст ошибки
                    Правильно заданный вопрос повышает вероятность получения нужного ответа.
                    Что-то не работает? Загляните в лог ошибок!
                    Есть проблема? "Локализуйте" её!
                    Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
                    • 785
                    • 2,113 Posts
                    Quote from: malartem at Dec 12, 2010, 03:01 AM

                    В .htaccess раскоментировал строчку
                    но ошибка не пропала.
                    Может на хостинге запретили менять параметры PHP в .htaccess, можно прямо в сниппет добавить
                    date_default_timezone_set(’Europe/Moscow’);
                    (на хостинге могли и это запретить)
                    Но вообще это, по сравнению с потерей связи с базой, мелочи.
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 18062
                      • 15 Posts
                      Quote from: esche at Dec 12, 2010, 04:09 AM

                      1. уберите php-разметку.. русские буквы читаться будут
                      2. лучше текст ошибки
                      там всего лишь комментарии и все.... они не особо нужны.

                      Quote from: AKots at Dec 12, 2010, 04:17 AM

                      Quote from: malartem at Dec 12, 2010, 03:01 AM

                      В .htaccess раскоментировал строчку
                      но ошибка не пропала.
                      Может на хостинге запретили менять параметры PHP в .htaccess, можно прямо в сниппет добавить
                      date_default_timezone_set(’Europe/Moscow’);
                      (на хостинге могли и это запретить)
                      Но вообще это, по сравнению с потерей связи с базой, мелочи.

                      по сравнению с базой это да, я согласен.
                      .htaccess на изменение не запрещен. я там менял подставление с www и без.... работает.

                      Кстати вылете еще один snipet с ошибкой.
                      Добавил
                      date_default_timezone_set('Europe/Moscow');
                      прямо в них... буду смотреть за ошибками.