Страница 1 из 1

Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 10:10 am
kuks
Подскажите, пытаюсь выполнить скрипт по создании личного списка контактов
и постоянно сообщает
[14:05:10] (RunError "contacts"): Время выполнения скрипта: 5318 мс
[14:05:10] (RunError "contacts"): Script timed out
время выполнения скрипта всегда около 5к мс, можно как то увеличить время выполнения скрипта ?
пробовал и с галкой и без на пункте "отключать скрипты из-за превышения времени выполнения"

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 11:15 am
Алексей Пикуров
Покажите текст своего скрипта, пожалуйста. Переношу тему в другой раздел.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 11:28 am
kuks
Код: Выделить всё
const
  GROUPS = 'RiverPark';
var
  sGroups, sCurrentGroup, sUINS, sBackup, s: string;
  iUINOwner, iUIN: integer;

begin
      sGroups := GROUPS;
      sUINS   := mGetUsersListInGroupsByNames(GROUPS); // получаем список пользователей группы
      sBackup := sUINS; // делаем резервную копию для цикла ниже
     
      while length(sUINS) > 0 do begin // перебираем пользователей группы
          iUINOwner := StrToInt(Fetch(sUINS, ','));
          mPersonalContactsClear(iUINOwner); // удаляем личный список контактов человека
          s := sBackup;
          mPersonalContactsAddGroup(iUINOwner, sGroups);

          while length(s) > 0 do begin // формируем ему новый личный список контактов
              iUIN := StrToInt(Fetch(s, ','));
             
                // если UIN человека не равен нашему собственному - добавляем его в список,
                // название группы - название компании, в которой работает человек
                // mSendPrivateMessage(28, 25, IntToStr(iUINOwner) + ' > ' + IntToStr(iUIN), 1);
                if (iUIN > 1) AND (iUINOwner <> iUIN) then mPersonalContactsAddUser(iUINOwner, iUIN, sGroups);
          end;
          // mSendPrivateMessage(28, 25, IntToStr(iUINOwner) + ' ! ', 1);

          // если пользователь онлайн - обновляем его личный список контактов
          if mIsUINOnline(iUINOwner) then mPersonalContactsRefresh(iUINOwner);
      end;
end.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:03 pm
Алексей Пикуров
Сколько пользователей в группе "RiverPark" ?

P.S. Используйте тег code при вставке исходников в форум.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:09 pm
kuks
92
PS: Ok

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:17 pm
Алексей Пикуров
Код будет очень долго выполняться. 92 * 92 = 8 464 раз только цикл будет основной крутиться, а там обращения к базе данных и рассылки пользователям.

Зачем такая дичь? Почему не воспользоваться общим списком контактов?

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:20 pm
Алексей Пикуров
Есть функция SetScriptTimeOut, можете с ней поиграться.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:23 pm
kuks
Мы перешли с другого чата, и там была возможность просто отключить группы, чтобы просто всем списком пользователей, вот решили в личный список контактов засунуть просто список.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:24 pm
Алексей Пикуров
Не понял вашего ответа.

Почему вы не хотите использовать один общий список контактов вместо 92 личных, которые абсолютно одинаковы ?

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:26 pm
kuks
у меня список контактов разбит по подразделениям и в них пользователи, а хочется чтобы было два варианта и просто список и группированный по подразделениям

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:29 pm
Алексей Пикуров
Я не очень понимаю, зачем :) Поясните, возможно, я предложу какое-то удобное для вас решение. Я понимаю, что вы привыкли к какому-то другому продукту с другой идеологией.

Поясните вашу задачу и что вы хотите получить в итоге. Формировать личные списки контактов сплошной простынёй, дублируя общий список контактов, по меньшей мере, странно.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:31 pm
kuks
все просто, кому-то удобно чтобы по группам было видно, кому-то общим списком

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 1:34 pm
Алексей Пикуров
Фильтр контактов же есть. Неужели удобно глазами пробегать 92 позиции?

Да и всё равно основное общение будет не из контактов, а из диалогов.

Но хозяин — барин :) Лупите огромные таймауты или выполняйте скрипты по частям, по 10-20 пользователей, что у вас быстрее отработает.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт фев 18, 2021 2:35 pm
Алексей Пикуров
Я добавлю на будущее специальную функцию, аналогичную mPersonalContactsAddUser, чтобы можно было добавлять в список не по одному юзеру, а сразу блоком, это сильно сэкономит время работы с базой данных.

В вашем конкретном случае вместо 92 итераций будет одна.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Ср мар 03, 2021 6:36 pm
Алексей Пикуров
Сделали функцию mPersonalContactsAddUsers.

Обновитесь на 8.5.4, пожалуйста.

Re: Script timed out при выполнении скрипта

СообщениеДобавлено: Чт мар 18, 2021 10:49 pm
Алексей Пикуров
Обновились, сделали скрипт с новой функцией?