Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Новичку нужна ваша помощь

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Немогу решить
Тали Сергей
Отправлено: 06 Июня, 2015 - 18:12:54
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Добрый день. Я пишу первый сайт с подгрузкой информации из бд. Использую phpMyadmin. Сначала объясню как устроен сайт. Впринцепи довольно банально: есть шаблоны основных страниц, дублирующиеся части вынесены в другой файл, в этом файле подставляються переменные содержащие нужную инфу полученую из файла получения переменных методом перебора двумерного массива. Вызов файла получения данных производиться require-ом из основного файла шаблона. Т.е дублирующая часть вызываеться из цикла в файле получения переменных, к нему подключен скрипт функций. Функции на 1 класс записей(1 шаблон) 2: первая получает объект из бд вторая разбирает его на двумерный массив и возвращает в первую функцию. Именно она вызываеться в файле получения данных. И все прекрасно работало. Но эти функции копировались для каждого отдельного мини шаблона (и их мягкомговоря стало много, около 80 пар)(шаблоны сильно отличаются). И так вышло что закончив с первой станницей и перейдя к следующему основному шаблону выпала ошибка: maximum function nesting level of '100' reached, aborting как раз в строке вызова функции соединения с бд скрипта с фунциями. Вот теперь гадаю над запутанной историей. Если ктото понял что нибудь и есть предложение, не стисняйтесь. Если надо кину скрипты
 
 Top
exlant
Отправлено: 06 Июня, 2015 - 20:31:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




Максимальный уровень вложенности функции в '100' достигнута, прерывание...
 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 20:38:09
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




exlant пишет:
Максимальный уровень вложенности функции в '100' достигнута, прерывание...

Да, я погуглил нашел. Но толком не нашел информации описывающей что такое вложеность и как обойти эту ошибку, или стоит ли вообще ее обходить. Может нужно переделывать схему выборки. Когда выкладывать этот сайт на хост там такаяже проблема может возникнуть.
 
 Top
exlant
Отправлено: 06 Июня, 2015 - 20:40:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




на сколько я понял, у вас получается функция в функции, которая в функции, которая в функции, и так более 100 раз, вот и ошибка, не понимаю зачем делать такую вложенность...
 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 20:48:17
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Нет немного не так. Или я может не понимаю в каком месте она вызываеться таким образом. Но у меня в скрипте получилось 85 пар фунций по сути выполняющих одно и тоже действие для разных выборок из бд. Пара: функция выборки из бд, 2 функция - разбивает полученый объект в массив и отдает обратно в первую, а первая возвращает полученный результат. Я удалил последние 5 пар и ошибка пропала.
 
 Top
exlant
Отправлено: 06 Июня, 2015 - 20:55:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




Цитата:
Или я может не понимаю в каком месте она вызываеться таким образом.

скорей всего... а пишет, что у вас ошибка максимальной вложенности функций, может все-таки у вас где то рекурсия закралась?
 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 21:03:58
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




[quote=exlant]
Цитата:
может все-таки у вас где то рекурсия закралась?

Может быть. Я начинаю подозревать, у меня функция возвращающая двумерный массив вызываеться в отдельном файле для разложения на переменные и в конце этого цикла includ-ом вызываеться шаблон для подстановки переменных а к нему в свою очередь подключена библиотека с этим скриптом(85 пар). Может пока в базе не много записей и вложенность от каждого вызова не большая а все вместе дает о себе знать. Скажите если я бред отморозил. Продолжаю поиски.
 
 Top
exlant
Отправлено: 06 Июня, 2015 - 21:07:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




база тут не причем, 100 записей для базы это ничто! А вот в своем скрипте, вы явно что то перемудрили!
(Добавление)
а что бы понять, что именно, я не экстрасенс, нужно смотреть код!
 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 21:18:41
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




код большой. Могу вам на почту кинуть? Или тут как то в личку?
 
 Top
LIME
Отправлено: 06 Июня, 2015 - 21:24:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




МатрешкаУлыбка
Да это такая у тебя рекурсия хитрая
Вызывай что там у тебя есть последовательно а не матрешкой
 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 21:29:39
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




LIME пишет:
МатрешкаУлыбка
Да это такая у тебя рекурсия хитрая
Вызывай что там у тебя есть последовательно а не матрешкой

Так то оно так, только почему при первом же вызове она не достигает
100? И могут ли рекурсии складываться и давать 100?
(Добавление)
Если не сложно расскажите немного о рекурсии что знаете и о этой ошибке. Буду благодарен. Очень поможет в поисках.
 
 Top
LIME
Отправлено: 06 Июня, 2015 - 21:35:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Узнай что такое рекурсия для начала
100 это максимальная глубина стека вызовов по умолчанию в php
Не обязательно рекурсия
Может быть 100 разных фций вызывающих одна другую
У ОС тоже есть свое ограничение стека вызовов но оно поболее
Не вызывай внутри фции
Вызови следующую после отработки предыдущей
(Добавление)
Рекурсию нагугли
Не буду я тут учебники копипастить
 
 Top
exlant
Отправлено: 06 Июня, 2015 - 21:36:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




Тали Сергей рекурсия, это когда функция вызывает сама себя!
 
 Top
LIME
Отправлено: 06 Июня, 2015 - 21:37:58
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
Тали Сергей
Отправлено: 06 Июня, 2015 - 21:42:07
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




exlant пишет:
Тали Сергей рекурсия, это когда функция вызывает сама себя!
Спасибо, я это понимаю. Нотв моем коде такой прямой зависимости нет.
(Добавление)
Есть ли какойто способ посмотреть сколько раз и как вызываються функции интерпритатором и откуда береться эта 100 вложений?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB