Текущие данные в PHP

ОлегV

Новичок
Пусть некоторый цикл все время вызывает функцию тоже содержащую цикл. В некоторый момент возникает прерывание работы. Как узнать при каких значениях переменных циклов (внешнего и внутреннего) возникло прерывание.
В более общей постановке. В случае прерывания, например, по времени выполнения -30сек, можно ли получить значения нужных переменных (переменных во всем стеке вызовов) .
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
пиши в лог ход выполнения с нужными тебе данными.
 

ОлегV

Новичок
Лог не поможет. Прерывание по 30 сек. Данные: значение внешнего и внутреннего циклов нужны, что бы пропустить уже просчитанную часть и начать заново не с нуля, а с того на чем остановился. К сожалению все вычисление длится очень долго (часы).
 

Фанат

oncle terrible
Команда форума
запускай свои вычисления не детсадовскими циклами по 30 секунд из браузера, а в консоли.
 

Фанат

oncle terrible
Команда форума
есть. если это действительно стек вызовов, а не аварийное завершение программы.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
1. php не сильно хорош для таких длинных заплывов с вычислениями.
2. если пускать это все, то кроном с консоли, как уже писали.
3. обработанные данные надо помечать, обрабатывая по частям.
 

ОлегV

Новичок
К конкретной задаче. В программе есть цикл foreach( ...) внутри которого в зависимости от результатов идет обращение к каким-то функциям, то же производящим вычисления. Обработка одной функции занимает минуты, всего цикла -часы (десятки минут). Если бы время накапливалось только внутри первого цикла, я б поставил какой-нибудь watcher, который бы мне сообщал переменную этого цикла, до какой досчитано, или запоминал ее и в следующий раз начинал вычисления с этого значения переменой. Но если время истекло в функции, я должен запомнить и переменную цикла в этой функции и переменную во внешнем цикле, что б начать с этого места. Делать переменные глобальными не подходит, так как в разных функциях переменные цикла могут совпадать.
 

ОлегV

Новичок
есть. если это действительно стек вызовов, а не аварийное завершение программы.
Естественно я сам завершаю программу ( за секунду до аварийного завершения )..Как мне получить данные переменных в различных частях стека?
 

ОлегV

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

AmdY

Пью пиво
Команда форума
ОлегV
А чем тебя НЕ устроил вариант Фанат, не прерывай выполнение и не будет проблемы. отмени таймлимит для браузерных скриптов, используй exec и cli. Если всё же решишь свою проблему своим способом, то отпишись здесь, мы скинемся тебе на билет в Дели.
 

~WR~

Новичок
Вспомнилось, что xdebug выводит стек и текущие переменные при любой ошибке. В том числе, при превышении лимитов по времени и по памяти.
Удобно для тестирования. Хотя, если нужно на продакшне, то лучше еще что-то придумать.
 
Сверху