Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как отрубить процесс при отключении клиента? / 10 сообщений из 10, страница 1 из 1
09.11.2006, 13:58
    #34115969
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
Привет.

Ситуация:
есть веб приложение (Apache, PHP, Postgres), с которым работаем порядка 50-60 пользователей.

Бывают случаи, когда пользователь запускает формирование какого-то отчета, понимает, что указал неверные критерии и останавливает выполнение скрипта. Т.е. нажимает кнопку Стоп в эксплорере.

Заметьте, что процесс postgres все еще обрабатывает его запрос.

Вопрос:
Можно ли отлавливать такие случаи и убивать повисшие процессы на сервере для сохранения работоспособности?


Спасибо.
...
Рейтинг: 0 / 0
09.11.2006, 19:18
    #34117430
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
авторТ.е. нажимает кнопку Стоп в эксплорере.
Между эксплорером и Постгресом есть прослоечка - апач. Вот это его задачи, а не постгреса.
...
Рейтинг: 0 / 0
10.11.2006, 08:57
    #34118101
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
Согласен.

Наводящий вопрос. А через что можно это настроить в апаче. Или это в другой форум?


P.S.
ответ: через httpd.conf не принимается :)
...
Рейтинг: 0 / 0
10.11.2006, 13:17
    #34119315
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
Это в другой форум.
...
Рейтинг: 0 / 0
10.11.2006, 16:19
    #34120055
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
ездунВот это его задачи, а не постгреса.

Есть полностью подконтрольное нам приложение на сервере А, взаимодействующее с PostgreSQL на сервере B через libpq. Приложение через N минут [часов, секунд] после подачи запроса решило этот запрос прервать.

Казалось бы, PostgreSQL должен предоставлять какие-то средства для решения этой задачи.
Они действительно существуют?
...
Рейтинг: 0 / 0
10.11.2006, 18:54
    #34120545
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
PostgreSQL предоставляет - в pgadmin ты же можешь отменить запрос.
Другое дело клиентские библиотеки для php (да и других языков) - вот с этим труднее.
...
Рейтинг: 0 / 0
10.11.2006, 19:46
    #34120679
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
Funny_FalconPostgreSQL предоставляет - в pgadmin ты же можешь отменить запрос.


Да, я перепутал проблемы ;) -
PostgreSQL не позволяет убить сессию "снаружи".
...
Рейтинг: 0 / 0
10.11.2006, 19:56
    #34120696
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
ilejn Funny_FalconPostgreSQL предоставляет - в pgadmin ты же можешь отменить запрос.


Да, я перепутал проблемы ;) -
PostgreSQL не позволяет убить сессию "снаружи".
вобщето инфа для этого есть. Получить pid с помощью PQbackendPID. Передать этот пид на сервер, и там завалить. можно даже ХП написать для этого :)
...
Рейтинг: 0 / 0
10.11.2006, 20:00
    #34120700
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
st_serg
вобщето инфа для этого есть. Получить pid с помощью PQbackendPID. Передать этот пид на сервер, и там завалить. можно даже ХП написать для этого :)

Хотелось бы поподробнее, если можно. Как можно из хранимой процедуры на plpgsql вызвать команду ОС?
...
Рейтинг: 0 / 0
13.11.2006, 07:11
    #34122604
glebofff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отрубить процесс при отключении клиента?
ilejn st_serg
вобщето инфа для этого есть. Получить pid с помощью PQbackendPID. Передать этот пид на сервер, и там завалить. можно даже ХП написать для этого :)

Хотелось бы поподробнее, если можно. Как можно из хранимой процедуры на plpgsql вызвать команду ОС?

Собственно, из plpgsql - вряд ли, но "untrusted" языки это позволяют (pl/perl u , pl/tcl u , и т.д.):
Код: plaintext
1.
2.
3.
4.
5.
create function kill (id int8) returns int8 as
' 
return (kill 15, shift);
'
language 'plperlu'

Для убийства процесса совершенно необязательно изобретать велосипед - всё уже есть:

pg_cancel_backend sends a query cancel (SIGINT) signal to a backend process identified by process ID. The process ID of an active backend can be found from the procpid column in the pg_stat_activity view, or by listing the postgres processes on the server with ps.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как отрубить процесс при отключении клиента? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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