Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi service app

[es] :: Pascal / Delphi / Kylix :: Delphi service app

[ Pregleda: 411 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.st3.cable.xnet.hr.



+4 Profil

icon Delphi service app17.05.2021. u 09:26 - pre 34 meseci
Opet se patim sa service app. (Delphi XE 10.1)
Trebalo bi: service "čući" nad Firebird bazom i gleda promjenu na jednoj tablici. Kada se promjena dogodi, pošalje podatke u MySQL na Web-u.
Radi testa, ne pristupam MySQL bazi već sve radim na lokalnoj bazi. U konkeciji koristim user-a Admin tako da niti to ne može biti problem.

Da li service može "hvatati" post event iz FB baze?

Za pristup bazi koristim FireDac kontrole.

U OnExecute sam stavio Sleep tako da program provjerava podatke svakih 5 minuta.

U program sam stavio da upisuje message koji se mogu vidjeti u EventViewer-u.

Pokušao sam na dva načina:
1. U OnExecute pokrećem qry koji selektira potrebne podatke i u kom se izcršava exec upisa u MySQL
2. Kreirao sam zaseban thread koji obavlja posao.

U 1. slučaju service se ne može startati, javlja grešku.

U 2. slučaju, service se starta, thread se pokrene, ali ima problema sa dohvatom podataka iz baze:
- open konekcije ne javlja grešku, provjera kaže da je konekcija otvorena.
- open qry-a ne javlja grešku. Eof = false.
- pristup fieldu, koji (provjereno u bazi, provjeren qry van programa) nije nul već vraća integer (primary key tablice), u programu vraća (AsString) prazan string.
- try ... except ne javlja grešku.

Ako koristim zasebni thread (prema onom što sam našao na Web-u bi trebalo), kuda staviti kreiranje thread-a? U OnExecute, OnCreate ili OnStart?
Koliko sam shvatio, pokretanje thread-a (resume) treba staviti u OnExecute.

Da li se tko bavio service app s pristupom bazi? Imate li ideju gdje griješim i što napraviti?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi service app17.05.2021. u 22:44 - pre 34 meseci
> Da li service može "hvatati" post event iz FB baze?

Misliš na POST_EVENT komandu iz PSQLa? Trebalo bi, samo je bitno da port preko koga ide ta notifikacija bude slobodan (nije zabranjen u firewallu).

Da li ces da proveru radis poolingom (na x sekundi) ili preko eventsa?

> U OnExecute sam stavio Sleep tako da program provjerava podatke svakih 5 minuta.

OnExecute servisa ili threada? Zvanican savet je da se u OnStart servisa napravi novi thread i da dalje on radi sta treba.
Nemoj koristiti Sleep jer tako blokiras rad servisa/threada, koristi WaitForSingleObject npr.

> Pokušao sam na dva načina:

I OnExecute servisa i threada mora da napravi novu konekciju ka bazi (posebna instanca database, transaction i query komponente).

> pristup fieldu, koji (provjereno u bazi, provjeren qry van programa) nije nul već vraća integer (primary key tablice), u programu
> vraća (AsString) prazan string.

Vidi da li tvoj kod za rad sa bazom funkcionise u obicnom programu (ne servisnom).

> kuda staviti kreiranje thread-a? U OnExecute, OnCreate ili OnStart?

U OnStart.


 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi service app

[ Pregleda: 411 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.