За последние 24 часа нас посетили 29837 программистов и 1759 роботов. Сейчас ищут 933 программиста ...

Цикл while долго подгружает

Тема в разделе "PHP для новичков", создана пользователем Khaybulla, 19 ноя 2018.

Метки:
  1. Khaybulla

    Khaybulla Активный пользователь

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Цикл while долго подгружает таблицу каким способом можно переделать код что бы ускорить работу кода что бы подгружались данные быстрей


    PHP:
    1. <?php
    2. include('config.php');
    3.  
    4. function mysqlConnect($db,$user,$pass)
    5. {
    6.  
    7.   $link = mysql_connect('localhost', $user, $pass) or die (mysql_error());
    8.   mysql_query("SET NAMES 'utf8'");
    9.   mysql_select_db($db,$link);
    10.   return $link;
    11. }
    12. $mysql = mysqlConnect($dbname,$dbuser,$dbpass);
    13.  
    14. $tabContent = '
    15. <table class="fixed-mashine-table mod">
    16.        <tr>
    17.            <th><a href="" class="thead-title">Группа станков</a></th>
    18.        </tr>
    19.        ';
    20.         $sql = mysql_query("SELECT * FROM `sellCache`;");
    21.         while($groups = mysql_fetch_array($sql))
    22.         {
    23.              $tabContent .= '
    24.                <tr>
    25.                    <td><a href="/'.$groups['url'].'" target="_blank">'.$groups['groupSell'].'</td>
    26.                </tr>';
    27.         }
    28.  
    29. $tabContent .= ' </table>
    30. <div class="wrapper-machine-table">
    31.    <table  class="mashine-table mod">
    32.            <tr>
    33.                <th><a href="" class="thead-title">Кол-Во</a></th>
    34.                <th><a href="" class="thead-title">Цены(от - до)</a></th>
    35.                <th><a href="" class="thead-title">Средняя цена</a></th>
    36.                <th>Выбор</th>
    37.            </tr>
    38.            ';
    39.             $allCount = 0;
    40.             $g3e711 = 0;
    41.             $sql = mysql_query("SELECT * FROM `sellCache`;");
    42.             while($groups = mysql_fetch_array($sql))
    43.             {
    44.                 if ($groups['groupSell'] == '3Е711' && $g3e711 == 0)
    45.                 {
    46.                     $g3e711++;
    47.                 } else {
    48.                
    49.                  $allCount += $groups['count'];
    50.                 $tabContent .= '
    51.                <tr>
    52.                    <td>'.$groups['count'].'</td>
    53.                    <td>'.$groups['prices'].'</td>
    54.                    <td>'.$groups['srPrice'].'</td>
    55.                    <td style="text-align:center;">
    56.                    <label class="unified-wrapper-checkbox">
    57.                        <input value="" type="checkbox" class="pCheckbox">
    58.                        <span class="check"></span>
    59.                    </label>
    60.                    </td>
    61.                </tr>';
    62.                 }
    63.             }
    64.            
    65.  
    66. $tabContent .= '  
    67.        </table>
    68.    </div>
    69.    <div style="text-align: right; font-size: 14px; margin: 5px;"><label style="cursor:pointer;"><input type="checkbox" class="checkAll"> Выбрать все</label></div>
    70.    <script type="text/javascript" src="/rewriteGoogle/tablesorter/script.js"></script>
    71.    <script type="text/javascript">
    72.  var sorter = new TINY.table.sorter("sorter");
    73.    sorter.head = "head";
    74.    sorter.asc = "asc";
    75.    sorter.desc = "desc";
    76.    sorter.even = "evenrow";
    77.    sorter.odd = "oddrow";
    78.    sorter.evensel = "evenselected";
    79.    sorter.oddsel = "oddselected";
    80.    sorter.paginate = false;
    81.    sorter.currentid = "currentpage";
    82.    sorter.limitid = "pagelimit";
    83.    sorter.init("table",1);
    84.  
    85.    document.getElementById("countId").className = "desc";
    86.  
    87.  </script>
    88.  
    89.  
    90.    ';
    91.  
    92. mysql_close($mysql);
    93.  
    94. $tpl = file_get_contents('template/template_sell.tpl');
    95. $tpl = str_replace('{REQUEST}',trim(rawurldecode($_SERVER['REQUEST_URI'])),$tpl);
    96. $tpl = str_replace('{Группа}',$group,$tpl);
    97. $tpl = str_replace('{Таблица}',$tabContent,$tpl);
    98. $tpl = str_replace('{Кол-во}',$allCount,$tpl);
    99.  
    100. echo($tpl);
    101. ?>
    Заранее спасибо за ответ!
     
  2. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    И зачем тебе два одинаковых запроса к таблице базы данных?
     
    Khaybulla нравится это.
  3. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Другой вопрос, это зачем вообще старые функции использовать :)
    mysql_connect()

    Внимание
    Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:
     
    Khaybulla нравится это.
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    ну и запросы внутри циклов - зло
     
    Khaybulla нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @ADSoft, в коде этого вроде нет. Но есть среди разметки, что тоже не оч. хорошо.

    @Khaybulla, делайте запрос до начала формирования контента, т.е. не смешивайте его с разметкой, даже если при этом не происходит его вывод. Для повышения скорости вместо дубля запроса используйте сброс результата перед повторным его использованием (см. ф-цию previewrow() в этом комменте). Если позиций слишком много, используйте пагинацию. Возможно, имеет смысл применить кэширование, чтобы не лезть в базу и не формировать контент при обработке каждого запроса к странице.
     
    Khaybulla нравится это.
  6. Khaybulla

    Khaybulla Активный пользователь

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Спасибо большое за совет! первый способ особо не чего не поменял может совсем немного ускорил но этого не достаточно, воспользуюсь вторым способом думаю это наверняка ускорит работу.