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/