PDA

Visualizza la versione completa : Creare Procedura Automatica ed Indipendente


Eagleyes
01-08-2006, 09:52
Saluti a tutti...

eccovi la mia richiesta:

devo realizzare un automatismo su un server web.
la procedura o il programmino deve essere sempre in esecuzione e controllare ogni "xx" secondi un db, per poi inviare un allarme se l'ultima scrittura nel db è avvenuta oltre "yy" secondi.

qualcumo vuole cimentarsi in questa impresa?

1° ostacolo : rendere la procedura indipendente dall'esecuzione di una pagina web ( attraverso una schermata di controllo potrei avere un bottone "avvia" ed uno "arresta" e magari tante statistiche del tipo: tempo di lavoro, scritture eseguite, controlli eseguiti, eccc...)

2° ostacolo : far comunicare eventuali allarmi ( ma su questo banale ostacolo ho già risolto, basta inviare una mail con un report / log )

3° vincolo : linguaggio che possa interagire con php e mysql

buon lavoro e grazie!
Eagle

Mich_
01-08-2006, 10:57
La cosa non e` troppo dififcile.
Pero` non puoi usare i CGI. Devi fare un programma che gira sul server (e accede al database).
Il programma puoi realizzarlo in linguaggio Perl, ma devi richiamarlo con gli strumenti del SO.
Per linux e sim, puoi usare il cron (vedi man cron e man crontab);
per windows non so come si chiama (ma c'e` sicuramente).

Quindi il prgramma NON e` sempre in esecuzione, ma viene richiamato ad intervalli regolari.
Il tuo "avvia" e "arresta" puoi farlo tramite CGI: devi solo accedere ad un file, che contiene solo un booleano che abilita il programma a proseguire, oppure lo uccide subito.
Il programma quindi devi per prima cosa controllare quel file, e a seconda del valore letto proseguire nel test del database o uscire.
In alternativa, avvia e arresta possono avviare o uccidere la chiamata nel crontab (devi semplicemente fare un system() con la chiamata al cron/crontab.

Eagleyes
01-08-2006, 11:07
idea giusta la tua.

ma ora ti aggiungo un elemento che complica il tutto!
il web server non è in locale ma su register.it

e non vorrei dire una sciocchezza ma risiede su un server windows!

Progettazione:

1) linguaggi da utilizzare (perl, cgi e php) chiaramente meno mischioni si fanno e meglio è!
2) so che con JSP è possibile creare un cronometro, quindi creare un "avvia" ed "arresta" potrei comandare l'applicazione a mio piacere, slegata dal "cron" di linux o dalle operaz pianificate di windows.
3) so anche che ad intervalli precisi posso fare un accesso al db e controllare le varie tabelle con l'aiuto di JSP e PHP.
4) chiaramente se i punti 2 e 3 riuscissi a tradurli in cgi o perl sarebbe decisamente meglio!

proviamo a mettere giù del codice?
come vi viene in mente...

ciao Eagle

Eagleyes
01-08-2006, 11:13
C.V.D. il server di register è LINUX
quindi posso pianificare qualsisasi cosa...
mui bien...

Mich_
01-08-2006, 11:16
Io non ho mai lavorato con JSP. E non conosco a sufficienza il SO windows.

Se dovessi fare io una cosa del genere farei:
Un programmino in Perl, da far partire da parte del cron.
Uno o piu` CGI per l'amministrazione (quindi protetti da passwd) che fanno anche partire/fermare gli interrupt da parte del cron.
Uno o piu` CGI di interazione con il database da parte dei client (ma forse non ho capito completamente).

Nota che io per CGI intendo un programma con un preciso protocollo di comunicazione client-server.

Se vuoi lavorare con JSP, credo dovresti rivolgerti in programmazione (eventualmente chiedi a Shishii di spostare il thread - bottone in basso a dx).

Vedo adesso che puoi lavorare in linux. Questo semplifica (dal mio punto di vista).
Devi verificare se hai accesso alle risorse del SO (non e` ovvio che tutti i clienti lo abbiano): in particoalr evedi se puoi modificare il crontab.

NB: JSP gira sotto la JVM: una cosa comodissima se devi spostarti da un server ad un altro, ma che impiega risorse e tempo macchina. Se il tuo processo non e` leggerissimo, conviene usare uno strumento piu` diretto.

Eagleyes
01-08-2006, 11:25
non voglio assolutamente usare JSP!

voglio seguire la tua idea...
anzi a dirti la verità sto pocciando con perl e cgi ankio.

mi mandi una bozza di ciò che faresti???

te ne sarei grato!
così da imboccare la strada giusta, poi vi mando il risultato finale.

ciao Eagle

Mich_
01-08-2006, 11:40
Conosco troppo poco del problema per potermi sbilanciare. Soprattutto non so cosa c'e` nel DB, chi ci deve scrivere e come. Qulai sono le interazion tra i vari programmi che accedono agli stessi dati.

Quanto ho scritto nel post precedente (il secondo paragrafo), dovrebbe essere una traccia, da sviluppare.

Pero` ricorda che dovrai usare il floc (file lock), altrimenti avrai conflitti.

Eagleyes
01-08-2006, 12:28
CHIARIMENTI:

Tabella: prova
Campi: utente, filename, data, ora (utente+filename è la chiave)

attraverso il programma perl devo accedere a questa tabella, leggere la data e l'ora e confrontarle con quella attuale.

CICLO (utente)

SE data, ora sono > di data, ora attuale + intervallo -> INVIO MAIL

PASSO all'utente successivo

FINE CICLO

prvi a farmi un programmino del genere?
grazie 1000.

Mich_
01-08-2006, 14:57
Subito una considerazione (in forma di domande).
Chi scrive nella tabella? E` sempre un programma Perl?
Dove legge la data/ora? La prende dal server o viene inserita leggendola da client?

Altra considerazione.
Conosci gia` il sitema per accedere al database? Usi i moduli di Perl? Che database usi?

Poi la cosa non e` difficile:
leggi la data dal file
leggi la data del server (funzioni time e localtime)
fai la differenza (mi pare che risulta espressa in secondi)
verifichi se e` maggiore dell'intervallo

Il tutto inserito in un loop.

Eagleyes
01-08-2006, 15:43
Ti stai perdendo!

ho un db mysql, non importa chi lo scrive, cmq x la tua curiosità: viene scritto da attraverso una pagina php!

La data e ora devono essere prese dal server e non dal client!
La vecchia funzione date(); del php => in perl sarà simile immagino!

Ora... pensavo se fosse possibile mettere in crontab una pagina php (essendo php un vero linguaggio di programmazione) risolverei molto!

ti è + chiaro?
grazie x i tuoi sforzi.

Loading