Hello! On Wednesday 20 January 2010 10:49:26 Denis Feklushkin wrote: > ой ей! нельзя так делать мне! Время выполнения команды велико и юзер не должен здать окончания её выполнения. Эта "проблема" в юниксе никогда не существовала: blablabla & Пример для постгреса: $ cat test.sql CREATE OR REPLACE FUNCTION public.test(integer) RETURNS text AS $BODY$ exec sleep $1 & $BODY$ LANGUAGE 'pltclu' VOLATILE SECURITY DEFINER; select public.test(100); $ psql -h localhost -U postgres offline4 Welcome to psql 8.1.15, the PostgreSQL interactive terminal. offline4=# \i test.sql CREATE FUNCTION test ------- 32627 (1 row) \q $ ps aux|grep 32627 postgres 32627 0.0 0.0 3692 496 ? S 11:36 0:00 sleep 100 > Чтобы такое сделать в постгресе и придумали LISTEN/NOTIFY: закидываешь в таблицу-очередь, делаешь NOTIFY blablabla и демон выполняет внешнюю команду из этой очереди. NOTIFY behaves like Unix signals in one important respect: if the same notification name is signaled multiple times in quick succession, recipients may get only one notification event for several executions of NOTIFY. So it is a bad idea to depend on the number of notifications received. Instead, use NOTIFY to wake up applications that need to pay attention to something, and use a database object (such as a sequence) to keep track of what happened or how many times it Как я понимаю, вам хочется указанное ограничение обойти, создав таблицу-очередь и выставляя в ней флаг is_new. И это вместо стандартного юниксового механизма. Best regards, Alexey Pechnikov. http://pechnikov.tel/ |