Newsgroup: it.comp.www.asp
Titolo: Più thread (senza abbandonare la stessa sessione)

Qualche guru sa se nelle ultime versioni si può ?
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+
| Attenzione: rispondo ad ogni invio di pubblicità non richiesta | 
| o spam di qualsiasi altro genere con un messaggio al provider  |
| di competenza. Ai sensi della legge sulla privacy NON avete il |
| permesso di utilizzare i miei dati per questi scopi.           |
+----------------------------------------------------------------+


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/icwa.asp
Tutto su WindowsNT? Su 
http://www.aspitalia.com
Professional WAP, per te su 
http://www.aspitalia.com/store/
Impara l'e-conomy su 
http://www.e-conomy.it

> Qualche guru sa se nelle ultime versioni si può ?
DB> che intendi
Una cosa come questa
$cat uno.asp
<% 
   chiamata_magica("due.asp")
'   ....
   x = SessionID
'   ....
%>
$cat due.asp
<%
'   .... 
   x = SessionID
'   ....
%>
dove  chiamata_magica()  lancia  l'interpretazione  di  due.asp  senza
terminare quella di  uno.asp. Ed in tutti e due gli  script x si trovi
ad avere lo stesso valore.
[Perché mi servirebbe : come ho già detto altrove sfrutto il fatto che
 sessionID  è  il  valore del  cookie  con  il  quale si  associa  una
 richiesta di  pagina ASP  alla sua sessione  per "far  risorgere" una
 sessione  che verrebbe  scartata a  causa di  "una gita  fuori porta"
 (altra  applicazione asp  e  altro server).   Questo  mi lascia  però
 allocata la sessione  che ASP crea prima che io metta  in atto la mia
 fetida  tecnica, e  tale risorse  rimangono  bloccate fino  a che  la
 sessione sparisce  per timeout. Ora la tecnica  fetida viene attivata
 con una certa frequenza dagli utenti ed io sono alla ricerca di tutto
 quello che si  può fare per liberare risorse dato  che la scarsità di
 risorse è la  più probabile causa dei blocchi  del sottosistema ASP -
 vecchissima versione -. Dal newsgroup (sopratutto dai due ricchissimi
 Data Base  :) ) ho già appreso  delle cose, ma quanto  più posso fare
 tanto meno mi trovo a dover far riavviare il server :) ]


  tanto meno mi trovo a dover far riavviare il server :) ]
;-))




> vecchissima versione -
DB> imposta il timeout della sessione ad un minuto. in questo modo la sessione
DB> scade subito, in più liberi risorse che tanto non ti servono....
Hmmm... Bella idea... Ti faccio sapere...


>>>> "DB" == Daniele Bochicchio [MOD icwa] <Daniele> writes:
DB> imposta il timeout della sessione ad un minuto. in questo modo la
DB> sessione scade subito, in più liberi risorse che tanto non ti
DB> servono....
GUL> Hmmm... Bella idea... Ti faccio sapere...
Purtroppo nulla.
$cat XXReturn.asp
<%
   '<!-- nuova sessione -->
   Session.Timeout=1
   '<!--  Risistemare a suo posto il cookie della vecchia sessione -->
   Response.Cookies("SessionID") = Request.QueryString("ID")
   '<!-- .... ALCUNE OPERAZIONI, costruisco XXcount, XXitems e XXvals -->
   '<!-- prelevando i valori dalla querystring di response            -->
   Response.Redirect("/KLUGE/Asp/XXReturn1.asp?XXN=" & XXCount & XXitems & _
			XXvals)
%>
Purtroppo mi ritrovo che la vecchia sessione (ripristinata) ha un timeout
più vicino al minuto che ai 10 minuti di default (e ho già utenti che si
lamentano che 10 minuti è poco...).


 lamentano che 10 minuti è poco...).
mi sfugge 
q.sa
ma vuoi o non vuoi utilizzare la sessione?


 ha scritto nel messaggio
DB> mi sfugge 
q.sa
DB> ma vuoi o non vuoi utilizzare la sessione?
Vorrei (se  possibile) ritrovarmi  con 2 pagine  ASP in  parallelo (mi
pare  di aver  capito che  W2k dovrebbe  permetterlo) lanciate  da una
stessa pagina  ASP. Nella prima  c'è una vecchia  sessione risuscitata
con il  trucco dei cookie, nella  seconda la sessione  generata da IIS
quando   rientro  nell'applicazione.    Questa   seconda  sessione   è
assolutamente  inutile e  andrebbe distrutta  quanto  prima (lasciando
sopravvivere indisturbata  la prima). Mi  sa tanto che è  MOLTO meglio
passare a Oracle e lasciar fare a lui il dialogo con l'altro DB... :)


 stessa pagina  ASP.
cosa intendi esattamente con due pagine ASP lanciate in parallelo?
non ti basta un semplice include?


> stessa pagina  ASP.
DB[i> cosa intendi esattamente con due pagine ASP lanciate in parallelo?
DB[i> non ti basta un semplice include?
No. Non posso rilasciare i dettagli della cosa (vabbè, é troppo fetida :) )
ma in pratica accade questo.
L'applicazione ASP opera  su dati di un sistema  informativo interno e
alcuni di questi dati sono  importi da pagare. Ora questi importi sono
leciti solo se esistono delle autorizzazioni di spesa.  Purtroppo tali
dati sono fisicamente altrove e raggiungibili solo via ASP.
Ora fare in modo che una  applicazione di Server1 chiami pagine di una
applicazione di  Server2 non è  difficile. La rogna  è che i  dati che
arrivano   devono   rientrare    nel   flusso   dell'applicazione   di
Server1. Facendo girare il valore  di SessionID da Server1 a Server2 e
poi   indietro   a  Server1   riesco   a   ripristinare  la   sessione
originaria. Solo  che al momento  del rientro in Server1  viene creata
una nuova sessione (priva di oggetti) che vorrei scartare.
Ora come ora la storia è  così (ne avevo parlato in un'altro thread ad
una persona che probabilmente non voleva capire...)
Server1				Server2
Pagina1.asp
Pagina di interazione
Lancia la verifica
chiamando 
/APP1/VerificaGo.asp
    |
    |
    V
VerificaGo.asp
Salva alcuni dati in
oggetti sessione e
prepara un particolare
parametro CGI(*) "ID" il
cui valore è SessionID
quindi chiama
http://Server2/App2/Ver.asp
 
    +----------------------------+
                                 V
				Ver.asp
				Estrae i dati di validazione
				e li confeziona per APP1
				quindi li passa a 
 
http://Server1/App1/Ret1.asp
				insieme al cookie "ID"
    +-----------------------------+
    V
Ret1.asp
Prende il valore del cookie 
"ID" e con questo setta il 
cookie "SessionID".
Gli altri dati ricevuti
li fa transitare
Richiama 
/APP1/Ret2.asp
[Nota a questo punto la
 sessione generata da IIS
 e scartata con la manovra
 del cookie aspetta 10
 minuti prima del timeout]
    +
    |
    V
Ret2.asp 
Prepara i dati affinché
Pagina1.asp possa dare
i risultati della validazione.
    +
    |
    V
Pagina1.asp
Mostra i dati che aveva all'inizio
più le info di validazione
(*) Io chiamo CGI parameters quelli che si prelevano con la collezione
request.querystring(). Sai dirmi il nome corretto ?
Tornando  al  perché  vorrei  le  due pagine  in  parallelo.   Non  mi
dispiacerebbe  se  Ret1.asp,  prima  di  settare  il  cookie,  potesse
lanciare  Kill.asp  continuando  la  sua esecuzione  parallelamente  a
questa.  Kill.asp a questo  punto potrebbe  fare un  Session.Abandon e
liberare risorse.
Anyway ora è solo accademia, perché migreremo le due applicazioni su
un solo server usando Oracle come DB...



Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
Tutto su WindowsNT? Su 
http://www.aspitalia.com
Libri ITA o ENG con sconti del 15% su 
http://store.aspitalia.com/
Tech Leader per 
http://www.e-conomy.it

> una persona che probabilmente non voleva capire...)
DB> [...]
DB> un mio parere: leggermente incasinato, potresti provare a semplificare un
DB> tantino.
Semplificare  la spiegazione  o  l'ambaradan ?  Credo  che (se  serve)
cercherò  di tirare  fuori un  esempio funzionante,  credo che  sia la
spiegazione migliore.
Nota : l'ambaradan è nato come _modifica_successiva_ di una funzione già
abbastanza complessa di per se...
DB> subito  prima  del redirect  dal  server2  al  server1, chiama  un
DB> session.abandon, dovrebbe andare.
Non posso abbandonare la sessione nel flusso principale... Non potendo
usare la  tecnica tabulata per evitare  "salti in mezzo  al codice" da
parte degli utenti  ho dovuto inserire dei controlli  che si basano su
una variabile memorizzata nella session.


 una variabile memorizzata nella session.
ok, il tuo problema era che partivano due sessioni? uccidine una non appena
non ti serve più!


 o ancora, ad utilizzare SOAP, e quindi gestire questi dati via XML?
Non l'ho mai sentito.. potresti dirmi qualcosa in piu'...
Grazie. Ciao,
  Fabio Arena


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
La più grande community italiana di sviluppatori!