Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    come ottimizzare questo codice

    ho questa pagina che si reloada ogni 25 secondi in un frame per fare controlli su nuovi messaggi ricevuti e login dell'utente in community

    siccome è molto pesante sta cosa si può ottimizzare in qualche modo?
    magari pure se devo passarla ad altro sitema per esempio aspx ma preferirei asp ...lo mastico meglio
    in pratica io faccio i controlli sulle date potrei evitare tutti sti controlli inserendo altro ttipo di soluzione?

    codice:
    	sql="Select * from Iscritti"
    	rs.Open sql , Conn ,3 ,3
    	do while not rs.eof
    	if rs("Status_Connect")=true then
    	if rs("ID")=Session("ID") then
    	rs("Status_Connect")= True
    	rs("Date_Now")= Now()
    	Session("ID")=rs("ID")
    	else								
    	if DateDiff("s",rs("Date_Now"),Now())>240 then
    	rs("Status_Connect")= False
    	rs("Date_Now")= []
    	end if			
    	end if
    	end if							
    	rs.MoveNext				
            loop
    	rs.close
    'ricezione messaggio se esiste
    
            if IsNumeric(session("ID")) and Session("ID")<>"" then
    	sql="Select * from Iscritti inner join miniblog on Iscritti.ID=miniblog.ID_Destinatario where miniblog.ID_Destinatario="&Session("ID") & " AND  Iscritti.Status_Connect=true and Check=false"
    	rs.Open sql , Conn ,3 ,3
    	Do while not rs.eof
    
    	if DateDiff("s",rs("Data_Messaggio"),Now())<25 then
    	%>
    	<script>
    	top.window.open('ricevi.asp?ID=<%=rs("ID")%>&delete=True','','width=380,height=299')
    	</script>
    	<%			
    	end if
    
    	rs.MoveNext
            loop
    	end if	
    	set rs=Nothing
    	Conn.close
    	Set Conn=nothing
        %>


    grazie 36.000
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  2. #2
    1. QUERY CON WHERE INVECE CHE CON IF
    nel primo LOOP la query non è completa

    tu carichi TUTTO il recordset ma poi fai un IF che esclude molte cose

    usa una query come

    sql="Select * from Iscritti WHERE status_connected = 1"

    e elimina il primo IF

    2. POPOLA I RECORDSET SOLO DI QUELLO CEH TI SERVE
    non fare un SELECT * (select all) ma seleziona SOLO i campi che ti servono

    quindi (se non erro) nella prima query

    sql="Select Status_Connect, Date_now, ID from Iscritti WHERE status_connected = 1"

    ---

    questa prima parte già alleggerisce NON poco il carico

    3. AGGIORNAMENTO
    non so come hai impostato il codice precedente, ma noto che esegui aggiornamenti direttamente sul recordset

    personalmente ti consiglierei di eseguirli a parte con istruzioni sql UPDATE e poi conn.execute "UPDATE..."

    4. METODI
    noto che per segnare se un'utente è online utilizzi un campo nel database, e poi "obblighi" tutti gli utenti ad "aggiornarlo" controllando tutti gli utenti

    non sarebbe più "giusto" utilizzare questo metodo

    a. utenti si connette > imposti STATUS_CONNECTED = TRUE e DATE NOW
    b. utente aggiorna pagina > imposti DATE NOW = NOW()

    c. utenti legge lista utenti connessi >
    fai una query di tutti gli utenti con SESSION_CONNECT = TRUE e controlli la differenza dei 240 secondi (che è il timeout che hai scelto).
    se qualcuno è fuori timeout, aggiorni il database, altrimenti lasci stare

    in questa maniera non vengono controllati TUTTI gli utenti, ma SOLO gli utenti che hanno STATUS_CONNECTED = TRUE, e il db viene modificato SOLO per quelli che hanno un timeout superato

    meno peso per l'utenza, meno peso per il server

    5. QUERY MESSAGGI
    qui non mi è proprio chiaro il meccanismo
    fattosta che cmq ad OGNI pagina tu fai controllare TUTTI i messaggi e visualizzi un link SOLO se il tempo passato è < di 25 secondi...

    se mi spieghi il concetto di questa cosa sarò lieto di esprimerti un mio parere

    ---

    ognuno dei 4 "consigli" precedenti nasce dall'esperienza sul campo.
    su qualsisasi dei primi 4 punti se non ti sono chiari sarò lieto di essere più chiaro, e se non sei d'accordo sarei contento di discuterne...

    se ho capito male qualche punto dello script spiegamelo

    ciao
    san imente saluta

    * http://simonecingano.it *

  3. #3
    per i primi consigli no grazie...grazzissime..ora mi metto all'opera e vedo cosa viene fuori...


    in quanto ai messaggi
    se il date diff dei miei messaggi ricevuti e inferiore a 25 secondi
    me lo apre in automatico in popup altrimenti resta nel db fermo....


    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  4. #4
    codice:
    sql="Select Status_Connect, Date_now, ID from Iscritti WHERE status_connect =true"
    	rs.Open sql , Conn ,3 ,3
    	do while not rs.eof
    	if rs("ID")=Session("ID") then
    	rs("Status_Connect")= True
    	rs("Date_Now")= Now()
    	Session("ID")=rs("ID")
    	else								
    	if DateDiff("s",rs("Date_Now"),Now())>240 then
    	rs("Status_Connect")= False
    	rs("Date_Now")= []
                                                                                                   			
    	end if
    	end if							
    	rs.MoveNext				
            loop
    	rs.close
    la prima parte l'ho cambiata così..che ne dici? l'ho testata e pare che funzioni.... posso scremare ancora? sto approfittando di te
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  5. #5
    Originariamente inviato da Stanislao
    codice:
    sql="Select Status_Connect, Date_now, ID from Iscritti WHERE status_connect =true"
    	rs.Open sql , Conn ,3 ,3
    	do while not rs.eof
    	if rs("ID")=Session("ID") then
    	rs("Status_Connect")= True
    	rs("Date_Now")= Now()
    	Session("ID")=rs("ID")
    	else								
    	if DateDiff("s",rs("Date_Now"),Now())>240 then
    	rs("Status_Connect")= False
    	rs("Date_Now")= []
                                                                                                   			
    	end if
    	end if							
    	rs.MoveNext				
            loop
    	rs.close
    la prima parte l'ho cambiata così..che ne dici? l'ho testata e pare che funzioni.... posso scremare ancora? sto approfittando di te
    ottimo lavoro, è proprio quello che intendevo

    ora scappo, ti faccio due appunti più tardi
    san imente saluta

    * http://simonecingano.it *

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.