powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
16 сообщений из 16, страница 1 из 1
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39022976
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Изабэлло выдумывать, как в каждом коннекте приостановить скрипт, "до особого распоряжения". И чтобы он проверял это распоряжение не чаще 1 раза в N секунд.

Необходима UDF'ка, которую можно вызвать изнутри PSQL-кода с требованием "а ну спать N секунд!", и чтобы при этом сервак не грузился от этого спящего коннкета. Ставить VS и выдумывать велосипед - в лом, да и времени нет.

Если есть у кого готовая dll - вышлите, плз, на p519446 ат yandex.ru
Нужно для одного сверхважного теста ;)

ЗЫ. А встроенная ф-ция в ФБ, видимо, не появится никогда :(
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023002
если оно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,

Код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
library SleepUdf;

uses
  Windows;

function SleepS(var Secs: Integer): Integer; cdecl; export;
begin
  Result := Secs;
  Sleep(Secs*1000);
end;

function SleepMs(var MSecs: Integer): Integer; cdecl; export;
begin
  Result := MSecs;
  Sleep(MSecs);
end;

exports
  SleepS,
  SleepMs;

end.

...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023024
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если оно,

спс!
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023072
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЗЫ. А встроенная ф-ция в ФБ, видимо, не появится никогда :(
Разве этим не шедуллеры всякие занимаются?
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023084
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanТаблоидЗЫ. А встроенная ф-ция в ФБ, видимо, не появится никогда :(
Разве этим не шедуллеры всякие занимаются?

Чтобы внутри скрипта приостановить работу на некоторое время? Нет, вряд ли это работа для внешней утилиты.
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023089
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlinewadmanпропущено...

Разве этим не шедуллеры всякие занимаются?

Чтобы внутри скрипта приостановить работу на некоторое время? Нет, вряд ли это работа для внешней утилиты.
Чуть иначе: ему хочется чтобы некий скрипт дергался через указанные промежутки времени. Или по наступлению события.
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023134
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanmiwaonlineпропущено...


Чтобы внутри скрипта приостановить работу на некоторое время? Нет, вряд ли это работа для внешней утилиты.
Чуть иначе: ему хочется чтобы некий скрипт дергался через указанные промежутки времени. Или по наступлению события.

Таблоидкак в каждом коннекте приостановить скрипт, "до особого распоряжения"
?
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023137
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlinewadmanпропущено...

Чуть иначе: ему хочется чтобы некий скрипт дергался через указанные промежутки времени. Или по наступлению события.

Таблоидкак в каждом коннекте приостановить скрипт, "до особого распоряжения"
?
! ну подумай, зачем запускать и приостанавливать, если можно запускать только тогда, когда это необходимо?
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023145
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanmiwaonlineпропущено...


пропущено...

?
! ну подумай, зачем запускать и приостанавливать, если можно запускать только тогда, когда это необходимо?

Ты скрипты Таблоида видел? Там километровые простыни тестов и где-то внутрях у него неонка одного скрипта скорее всего надо подожать пока другой километровый скрипт чего-нить нагадит и потом они вместе будут пытаться завалить сервер
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023149
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

там много чего может быть. Скорее всего у него скрипт некую предварительную инициализацию делает. Потом доходит до определённой точки где ждёт результатов другого коннекта. Если это действительно так, то такая схема может работать только если первый скрипт работает в RC, либо тупо читает внешнюю таблицу.
По большому счёту схемка не очень, так как удерживает долгоиграющую транзакцию. Хотя чёрт его знает что он там наворотил. Пусть лучше он сам суть изложит
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023154
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как раз задачи для шедулера: один скрипт дергает другой, который дергает первый (третий, десятый) после себя.
Все равно не могу себе представить необходимость усыплять коннект слипами. Хотя, отсутствие шедулера, конечно и не к таким извратам может привести. :-)
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023219
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

внешний шедуляр должен каждый раз устанавливать новый коннект. Это может быть проблемой. А внутреннего в FB нету. Если будет то там тоже как минимум два варианта:
1. Каждый раз происходит подключение нужного пользователя и далее выполняется PSQL блок
2. Подключение происходит один раз при первом вызове, т.е. сохраняется контекст подключения, но каждый раз стартуется новая транзакция

Вариант когда будет сохранятся контекст транзакции я не рассматриваю, так как такой вряд ли будет сделан вообще когда либо, да и слишком расточительно это.

Второй вариант может быть полезен потому, что может иметь общие временные данные между выполнениями PSQL блока, например через контекстные переменные и GTT уровня соединения. Вот мне кажется, что Таблоиду нужно именно это.
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023236
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, что он решил использовать UDF, а не свой любимый трюк с таймаутом транзакции и
select for update with lock.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023398
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСтранно, что он решил использовать UDF, а не свой любимый трюк с таймаутом транзакции и
select for update with lock.Это тоже сначала было, но не пропёрло на CS, всё в ступор влетело при числе аттачей > 50 :-) Точный сценарий уже не вспомню, но попозжее воспроизведу.

Ситуация следующая. При прогоне fbt-теста для CORE-1249 закралось сомнение, что с шатдауном в CS "чё-то не того": сообщение от IBProdiver'a какое-то лезет, да и базу в онлайн не переводит. Начал рыть дальше - и натолкнулся в трейсе на то, что уже после шатдауна в базе может шевелиться процесс GC (в арх-ре SS). Хорошо ещё, что пока GC там шевелится, управление в вызывающую среду из fbsvcmgr'a не возвращается.
Дальше - больше: сделал примитивно-корявый тест с запуском 20 молотилок, уже на SuperClassic'e - а он взял и подвис в усмерть. Сделал еще пару раз на CS - и получил в логах нескольких (не всех) молотилок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    CURRENT_GEN_VALUE
=====================
Statement failed, SQLSTATE = XX000
database C:\MIX\FIREBIRD\QA\FBT-REPO\TMP\C1249.FDB.TMP shutdown
-internal Firebird consistency check (CCH_precedence: block marked (212), file: cch.cpp line: 4368)
After line 26 in file c1249.sql.tmp
Statement failed, SQLSTATE = XX000
database C:\MIX\FIREBIRD\QA\FBT-REPO\TMP\C1249.FDB.TMP shutdown
-internal Firebird consistency check (CCH_precedence: block marked (212), file: cch.cpp line: 4368)
After line 41 in file c1249.sql.tmp
В общем, ваяю тест, который будет делать следующее:

0) асинхронный старт трейса силами fbsvcmgr'a
1) асинхронный старт N сеансов ISQL;
2) каждый после установки своего коннекта должен подождать без грузилова процесса сервера до тех пор, пока не увидит, что влезли все остальные (т.е. он "знает", сколько их должно быть в итоге);
3) как только "все тута" - так сразу и "понеслось": делаем дружно insert'ы, 1 млн строк
4) а в это время из-за угла, через пару секунд, выглядывает еще один fbsvcmgr и делает шатдаун ( action_properties dbname %dbpath%%dbname% prp_shutdown_mode prp_sm_full prp_force_shutdown 0 ). Батник при этом обязательно ждёт возврата управления из fbsvcmgr'a, т.е. тут вызов должен быть синхронным - в отличие от пп 0 и 1.
5) запускается еще раз fbsvcmgr с целью определить ID трейса, после чего - дается команда action_stop_trace. После этого тупо жду 7-10 сек - в надежде, что лог трейса полностью за это время запишется на диск.
6) ищу в логе трейса первое упоминание слова 'shutdown', запоминаю номер этой строки L
7) ищу далее в этом же логе ПОСЛЕ строки L любое из слов {ATTACH_DATABASE START_TRANSACTION COMMIT_TRANSACTION PREPARE_STATEMENT EXECUTE_STATEMENT_START EXECUTE_STATEMENT_FINISH CLOSE_CURSOR FREE_STATEMENT} -- но только чтобы там не было 'FAILED', т.к. это не интересует.

ЗЫ. UDF - всё равно будет когда-нить полезной, но я таки нашёл вспомнил, как выкрутиться без неё. Сейчас допиливать буду. Одну хрень уже нарыл (странности в логе коннектов после шатдауна, см. выше), может еще чего вытащу - ждите новостей (в трекере, наверное).
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023477
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

гм... я так понял тебе надо сначала все коннекты сделать, а потом в каждом из них запустить скрипт, но ты не можешь подсунуть скрипт уже потом после подключения isql к БД.
...
Рейтинг: 0 / 0
Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
    #39023482
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

я именно это и вспомнил, как правильно надо сделать )
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Есть у кого-нить UDF'ка типа sleep(N) для 32-разр. ФБ ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]