За последние 24 часа нас посетили 63074 программиста и 1741 робот. Сейчас ищут 911 программистов ...

Проблема с Apache-((((

Тема в разделе "PHP для новичков", создана пользователем kotjara2, 10 май 2011.

  1. kotjara2

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

    С нами с:
    2 ноя 2010
    Сообщения:
    23
    Симпатии:
    0
    Добрый вечер.
    Почему при рекурсии возникает Apache HTTP Server прекращает свою работу......, когда я скрипт запускаю....
    Что делать ?Настройки d php.ini или же в http.сonf (apache)
    когрда эту рекурсивную функцию закомментить(внутрение команды оставить), все так чисто заработает.-))))
    работаю в денвере.....
    Большая просьба намекнуть, подсказать.
     
  2. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Памяти не хватает? Покажи рекурсию)
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Может, функция зацикливается. Покажи код.
     
  4. memba

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

    С нами с:
    30 апр 2011
    Сообщения:
    11
    Симпатии:
    0
    Адрес:
    Россия
    У рекурсии есть определённое число "оборотов". Почитайте про значение по умолчанию для рекурсий.
    Возможно проблема в этом
     
  5. kotjara2

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

    С нами с:
    2 ноя 2010
    Сообщения:
    23
    Симпатии:
    0
    http://www.php.ru/forum/viewtopic.php?t ... 57f6591d5b
    там рекурсия... посмотрите, пожалуйста для обсуждения...
    PHP:
    1.  
    2. PHP:
    3.  <?php
    4.  function build_tree($link, $parent=0) {
    5.      $sql = sprintf("SELECT `cat_id`, `cat_name` FROM `cat_categories` WHERE `cat_parent`=%d ORDER BY `cat_id` ASC;", $parent);
    6.      if (!$result = mysql_query($sql, $link)) {
    7.          return mysql_error();
    8.      }
    9.      if (mysql_num_rows($result)) {
    10.          $output = '<ul>';
    11.          while($cat = mysql_fetch_assoc($result)) {
    12.              $output .= sprintf(
    13.                  '<li><a href="%s?cat_id=%d">%s</a>%s</li>',
    14.                  basename(__FILE__),
    15.                  intval($cat['cat_id']),
    16.                  htmlspecialchars($cat['cat_name']),
    17.                  build_tree($link, $cat['cat_id'])
    18.              );
    19.          }
    20.          $output .= '</ul>';
    21.          mysql_free_result($result);
    22.          return $output;
    23.      } else {
    24.          return false;
    25.      }
    26.  }
    27.  ?>
    28.  
    если закомментить рекурсивную функцию , причем внутренний вход оставить, все аж заработает.
    Для такого маленького списка эта рекурсия не работает
    • Каталог1
      Подкаталог1.1
      Подкаталог1.2
      Каталог 2
      Подкаталог2.1
      Подкаталог 2.1.1

    Никак....
    Просьба помочь, -)))и Большая пребольшая.... Что мне делать в этой ситуации
     
  6. ckjet

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

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    PHP:
    1.  
    2. <?function build_tree($args = array(), $parent = 0){
    3.  
    4. $sql = "Select `cat_id`, `cat_name`, `cat_parent`, `cat_url` from `cat_categories` where cat_parent='$parent' order by cat_id asc";
    5.  
    6. $data = mysql_fetch_assoc($sql);
    7.  
    8. foreach($data as $k => $v){
    9.  
    10.        $args[$v['cat_parent']] = array('id' => $v['cat_id'], 'link' => $v['cat_url'], 'name' => $v['cat_name']);
    11.  
    12.        $args = build_tree($args, $v['id']);
    13.  
    14. }
    15.  
    16. return $args;
    17. }?>
    Я б делал так. Но тогда нужно хранить ссылку в базе. Функция вернет массив с ссылками названиями и айдишниками в массиве.

    Обращаться так:
    PHP:
    1.  
    2. <?$menu = build_tree();?>
    3.  
    Использовать:
    PHP:
    1.  
    2. <?foreach($menu as $k => $v){
    3.         echo "<a href="{$v['href']}">{$v['name']}<br/>";
    4.         if(sizeof($menu[$v['id']]){
    5.                 echo '<ul>';
    6.                 foreach($menu as $k => $v){
    7.                         echo "<li><a href="{$v['href']}">{$v['name']}</li>";
    8.                 }
    9.                 echo '</ul>';
    10.         }
    11. }
    12. ?>
    Это пример для второго уровня, можно не ограничеваться двумя.
     
  7. kotjara2

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

    С нами с:
    2 ноя 2010
    Сообщения:
    23
    Симпатии:
    0
    ckjet
    Спасибо огромное за внимание.....-)))