[QGIS-pt] qgis server e projectos no pgsql - cache?
Giovanni Manghi
giovanni.manghi at gmail.com
Wed Jun 17 02:22:14 PDT 2020
Confirmo o que o Jorge disse,
falei com um dos core developers de QGIS server e disse que está disponível
para implementar uma solução, caso alguém ou alguma entidade esteja
interessado/a.
-- G --
On Tue, Jun 16, 2020 at 10:41 PM Jorge Gustavo Rocha <jgr at geomaster.pt>
wrote:
> Olá Duarte,
>
> Os projetos em base de dados têm que ter um tratamento ligeiramente
> diferente. Porquê? Porque não há o mecanismo de inotify quando um projeto é
> alterado. Ou seja, o QGIS Server sabe, para os projetos em ficheiro, quando
> o mesmo é alterado. Nestes casos, o QGIS Server pode reler o projeto e
> atualizar a cache do projeto.
>
> Com os projetos em base de dados o QGIS Server não é notificado quando são
> alterados. Por isso, uma forma de o QGIS Server reler o projeto é, como
> fizeste, fazer o restart ao Apache manualmente.
>
> Eu sou fã de guardar os projetos em base de dados, em ambientes
> empresariais/multi-utilizador. Nestes casos, o que faço, é por um trigger
> na(s) tabela(s) dos projetos QGIS que me envia uma notificação sempre que
> um projeto é criado, alterado ou removido. Em Python, recebo essa
> notificação e faço as ações decorrentes de cada uma destas coisas.
>
> O trigger em si, é simples e pode ser algo do género:
>
> create trigger project_change_qgis_projects
> after insert or delete or update on public.qgis_projects
> for each row
> execute procedure project_change();
>
> A função que é executado é que envia a notificação:
>
> CREATE OR REPLACE FUNCTION public.project_change() RETURNS trigger
> LANGUAGE plpgsql AS $$
> declare
> pname varchar;
> rec record;
> begin
> if (TG_OP = 'DELETE') then
> pname = old.name;
> rec = old;
> else
> pname = new.name;
> rec = new;
> end if;
> perform pg_notify('qgis', FORMAT('{ "project": "%s", "operation":
> "%s", "database": "%s", "schema": "%s", "username": "%s", "when": "%s" }',
> pname, TG_OP, current_database(), current_schema(), current_user, now() ) );
> return rec;
> end
> $$;
>
> Depois, crio um processo que escuta as notificações 'qgis' e recebe os
> parâmetros em JSON. No mínimo podes fazer um reload do Apache e assim
> garantes que o projeto é relido pelo QGIS Server sempre que é alterado.
>
> Espero que ajude.
>
> Abraço e bom trabalho,
>
> Jorge Gustavo
> On 16/06/20 17:45, duartecarreira wrote:
>
> Olá mais uma vez pessoal!
>
> Ando aqui às voltas com o qgis server e estou muito bem impressionado!!
>
> A dúvida é: tendo um projecto em pgsql servido pelo qgis server, estou a ver
> sempre o mesmo mapa, mesmo quando altero o projecto e volto a gravar.
>
> Parece haver aqui uma cache no meio... para ver o mapa uso o browser
> diretamente, com um url getmap construído à mão. A cache do browser está
> off. É enviado o header Cache-Control: no-cache.
>
> Sabem o que se pode estar a passar? O cap doc tb não é actualizado... Posso
> adicionar um layer novo, gravar o projecto, e o cap docs não o vai incluir
> num request novo.
>
> Se fizer reload ao apache (estou a usar mod_fcgi), já aparece o projecto
> correctamente...
>
> Eu li algures que o qgis ou o qgis server fazem cache do cap doc. Se o qgis
> server faz isto tb, não vejo como possa ultrapassar este problema... a não
> ser desistir de projectos em bd.
>
>
> Abr,
> Duarte
>
>
>
> --
> Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-pt-f5128248.html
> _______________________________________________
> QGIS-pt mailing listQGIS-pt at lists.osgeo.orghttps://lists.osgeo.org/mailman/listinfo/qgis-pt
>
> --
> [image: Logo] <https://www.geomaster.pt>
> *Geomaster*
> *Jorge Gustavo Rocha* | Software Engineer
> *e:* jgr at geomaster.pt | *m:* +351 910 333 888
> *g:* 41.54094,-8.40490 | *v: * 510 906 109
> *a: * Rua António Cândido Pinto, 67, 4715-400 Braga
> _______________________________________________
> QGIS-pt mailing list
> QGIS-pt at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-pt
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20200617/35ff515e/attachment-0001.html>
More information about the QGIS-pt
mailing list