Задача проста, есть импорт через крон. В таблице импорта есть вычисление, которое согласно некоторым условиям добавляет, обновляет записи в разных таблицах(data_insert, data_update, data_delete). Хочу видеть в какой последовательности и сколько раз запускалось то или иное вычисление, почему запустилось. То есть нужно логировать ход выполнения + сохранять некую контекстную инфу типа айди поля, тип инвента. Как это можно проследить? Есть уже готовые механизмы? Или куда копать?
1
Моделирование срабатывания вычислений
Автор wondertalik, 23 сент. 2013 20:43
Сообщений в теме: 5
#1
Отправлено 23 Сентябрь 2013 - 20:43
#2 Гость_Roman_*
Отправлено 24 Сентябрь 2013 - 11:06
Боюсь, что тут сразу что-то придумать нельзя. Могу только сказать, что есть массив $event, который формируется перед срабатыванием события, он же и меняется вычислениями. А само событие обрабатывается функцией popup_event() из include/functions1.php .
#3
Отправлено 24 Октябрь 2013 - 15:09
И тогда наводящий вопрос. До изм. модели вычислений, поле вычисление на изм. поле не срабатывло при создании. То есть я мог просто добавить выч. на изм. поля (например, если поле стало пустым, тогда сделать то-то). А как теперь это делать, ведь теперь вычисл. на изм. запускается при создании, даже если поле пустое (пустое тоже значение своего рода) и такая проверка уже не логична?
if (!empty($line['Руководитель'])) { ... } else { ... }Конкретная ситуация. Две таблицы: т1, т2. Поле менеджер из т1. Если это поле не пустое, то в т2 должна быть добавлена строка. Связь один к одному. Если поле пустое, строка из т2 находится и удаляется.
Сообщение отредактировал wondertalik: 24 Октябрь 2013 - 15:12
#4 Гость_Roman_*
Отправлено 24 Октябрь 2013 - 15:33
Можно использовать значения массива $event
if (!$event['is_new_line']) { // Строка не новая, поле реально менялось, запускаем вычисление .... }Или так
if ($event['changed'][555]['old'] !== false) { // Для полей в новой строке старое значение всегда false ... }
#5
Отправлено 25 Октябрь 2013 - 15:16
Roman (24 Октябрь 2013 - 15:33) писал:
Можно использовать значения массива $event
if (!$event['is_new_line']) { // Строка не новая, поле реально менялось, запускаем вычисление .... }Или так
if ($event['changed'][555]['old'] !== false) { // Для полей в новой строке старое значение всегда false ... }
#6 Гость_Roman_*
Отправлено 25 Октябрь 2013 - 15:20
Тогда можно просто проверять значение поля
if ($line['Имя поля']) // Для текстовых полей, списков, чисел, полей связи, пользователей и групп if ($line['Имя поля'] != "0000-00-00 00:00:00") // Для дат
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных