[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: очень хочется squirrelsh



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/


Reply to: