<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Olá Duarte,</p>
<p>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.</p>
<p>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.<br>
</p>
<p>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.</p>
<p>O trigger em si, é simples e pode ser algo do género:</p>
<p>create trigger project_change_qgis_projects <br>
after insert or delete or update on public.qgis_projects <br>
for each row <br>
execute procedure project_change();</p>
<p>A função que é executado é que envia a notificação:</p>
<p>CREATE OR REPLACE FUNCTION public.project_change() RETURNS
trigger LANGUAGE plpgsql AS $$<br>
declare<br>
pname varchar;<br>
rec record;<br>
begin<br>
if (TG_OP = 'DELETE') then<br>
pname = old.name;<br>
rec = old;<br>
else<br>
pname = new.name;<br>
rec = new;<br>
end if;<br>
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() ) );<br>
return rec;<br>
end<br>
$$;</p>
<p>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.<br>
</p>
<p>Espero que ajude.</p>
<p>Abraço e bom trabalho,</p>
<p>Jorge Gustavo<br>
</p>
<div class="moz-cite-prefix">On 16/06/20 17:45, duartecarreira
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:1592325909894-0.post@n6.nabble.com">
<pre class="moz-quote-pre" wrap="">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: <a class="moz-txt-link-freetext" href="http://osgeo-org.1560.x6.nabble.com/QGIS-pt-f5128248.html">http://osgeo-org.1560.x6.nabble.com/QGIS-pt-f5128248.html</a>
_______________________________________________
QGIS-pt mailing list
<a class="moz-txt-link-abbreviated" href="mailto:QGIS-pt@lists.osgeo.org">QGIS-pt@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-pt">https://lists.osgeo.org/mailman/listinfo/qgis-pt</a>
</pre>
</blockquote>
<div class="moz-signature">-- <br>
<title>Email Signature</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<table style="width: 525px; font-size: 11pt; font-family: Arial,
sans-serif;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align:center; font-size: 10pt; font-family:
Arial, sans-serif; border-right: 1px solid;
border-right-color: #fb6303; width: 125px; padding-right:
10px; vertical-align: top;" rowspan="6" width="125"
valign="top"> <a href="https://www.geomaster.pt"
target="_blank"><img alt="Logo" style="width:105px;
height:auto; border:0;"
src="https://geomaster.pt/wp-content/uploads/2017/02/cropped-geomaster300x300-1.png"
width="85" border="0"></a> </td>
<td style="padding-left:10px">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="font-size: 10pt; color:#0079ac;
font-family: Arial, sans-serif; width: 400px;
padding-bottom: 5px; padding-left: 10px;
vertical-align: top;" valign="top"> <strong><span
style="font-size: 14pt; font-family: Arial,
sans-serif; color:#fb6303;">Geomaster</span></strong><br>
<strong><span style="font-size: 11pt; font-family:
Arial, sans-serif; color:black;">Jorge Gustavo
Rocha</span></strong> <span
style="font-family: Arial, sans-serif;
font-size:11pt; color:#000000;"><span
style="padding-right: 5px; padding-left: 5px;">
| </span>Software Engineer</span> </td>
</tr>
<tr>
<td style="font-size: 10pt; color:#444444;
font-family: Arial, sans-serif; padding-bottom:
5px; padding-top: 5px; padding-left: 10px;
vertical-align: top; line-height:17px;"
valign="top"> <span><span style="color: #fb6303;"><strong>e:</strong></span><span
style="font-size: 10pt; font-family: Arial,
sans-serif; color:#000000;"> <a class="moz-txt-link-abbreviated" href="mailto:jgr@geomaster.pt">jgr@geomaster.pt</a></span></span>
<span><span style="padding-left:
5px;padding-right: 5px;"> | </span><span
style="color: #fb6303;"><strong>m:</strong></span><span
style="font-size: 10pt; font-family: Arial,
sans-serif; color:#000000;"> +351 910 333 888<br>
</span></span> <span><span style="color:
#fb6303;"><strong>g:</strong></span><span
style="font-size: 10pt; font-family: Arial,
sans-serif; color:#000000;"> 41.54094,-8.40490</span></span>
<span><span style="padding-left:
7px;padding-right: 5px;"> | </span><span
style="color: #fb6303;"><strong>v: </strong></span><span
style="font-size: 10pt; font-family: Arial,
sans-serif; color:#000000; padding-left: 7px;">
510 906 109<br>
</span></span> <span> <span style="color:
#fb6303;"><strong>a: </strong></span> </span>
<span> <span style="font-size: 10pt; font-family:
Arial, sans-serif; color: #000000;"><span> </span>Rua
António Cândido Pinto, 67, 4715-400 Braga<br>
</span></span> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>