Consigli Gestione server

Ciao ragazzi dopo tanto tempo mi faccio vivo, so scrivendo una bozza di gestionale web per la mia associazione disabili, ho preso un server da HostGator, ma trovo app decisamente lenta e con cadute di sessione o token, diciamo che qui sono un asino.

scenario in locale, tutto perfetto, velocit accettabilissime, mai una caduta di sessione, mai un crask
scenario rete, tutto perfetto, velocit randomica da 1s a 10/20sec con possibili crash o perdita di sessioni e relativi messaggi di errore

non riesc o a capire dev e sta il problema in quanto il server non lo so usare mio malgrado, ma sono sicuro di trovare qui da voi un anima che sia pronta ad aiutarmi.

ricordo i miei recapiti 3929824007 o ivanomonti su skype, sono pronto a condividere tutto ci che produco, come sempre :slight_smile:

Ciao Ivano, bentornato
visto che gi in rete locale hai dei problemi, probabilmente c’ qualche operazione che fai che rende problematica la sessione.
Ma dalle info che dai non posso dire altro.

[quote=208702:@Antonio Rinaldi]Ciao Ivano, bentornato
visto che già in rete locale hai dei problemi, probabilmente c’è qualche operazione che fai che rende problematica la sessione.
Ma dalle info che dai non posso dire altro.[/quote]

le operazioni sono semplci, ma credo che sia proprio il modo in cui uso gli object di xojo, ad esempio;

ho 10 dialog modal nella quale ogni dialog contiene un containercontrol, un menu che richiama le dialog, ovviamente finchè la dialog e aperta non ne posso aprire un’altra, le dialog sono degli scenari dito visualizza record, modifica record nulla di più.

le strade son 2

una inserisco le dialog dentro la webpage master e la richiamo con

      WebDialog_request_circle1.show

altra soluzione non inserire la dialog nella webpage master e istanziarla così

      dim cc as new WebDialog_request_circle
      cc.Left = (self.Width-cc.Width)/2
      cc.Top = (self.Height-cc.Height)/2
      cc.Title = Choice.Text
      cc.Show

diciamo che forse la prima sia corretta secondo lo standard xojo, ma non saprei quale delle due utilizzare, perché ripeto in locale tutto funziona perfettamente senza problemi di errori se non sessione scaduta, in remoto lo scenario cambia

[quote=208702:@Antonio Rinaldi]Ciao Ivano, bentornato
visto che già in rete locale hai dei problemi, probabilmente c’è qualche operazione che fai che rende problematica la sessione.
Ma dalle info che dai non posso dire altro.[/quote]

ecco una parte di codice interessato

Sub MenuAction(Item As WebToolbarMenu, Choice As WebMenuItem)
  if Item.Caption = "File" then
    
    if Choice.Tag = "New Circle" and (app.IOActivity = "Super admin" or app.IOActivity = "Admin") then
      'dim cc as new WebDialog_request_circle
      'cc.Left = (self.Width-cc.Width)/2
      'cc.Top = (self.Height-cc.Height)/2
      'cc.Title = Choice.Text
      'cc.Show
      WebDialog_request_circle1.Show
    end if
    
    if Choice.Tag = "New News" and (app.IOActivity = "Super admin" or app.IOActivity = "Admin" or app.IOActivity = "Editor") then
      'dim cc as new WebDialog_new_news
      'cc.Left = (self.Width-cc.Width)/2
      'cc.Top = (self.Height-cc.Height)/2
      'cc.Show
      WebDialog_new_news1.Show
    end if
    
    if Choice.Tag = "My Circle" then
      'dim cc as new WebDialog_request_circle_update
      'cc.Left = (self.Width-cc.Width)/2
      'cc.Top = (self.Height-cc.Height)/2
      'cc.Title = Choice.Text
      'cc.Show
      WebDialog_request_circle_update1.Show
    end if
    
    if Choice.Tag = "New member" then
      'dim cc as new WebDialog_associati
      'cc.Left = (self.Width-cc.Width)/2
      'cc.Top = (self.Height-cc.Height)/2
      'cc.Title = "Associati circolo "+ app.IOFullName
      'cc.Show
       WebDialog_associati1.Show
    end if
    
  elseif Item.Caption= "Service" or Item.Caption= "Structure" or Item.Caption= "Operator" then
    
    'dim cc as new WebDialog_schedule_new
    'cc.Left = (self.Width-cc.Width)/2
    'cc.Top = (self.Height-cc.Height)/2
    'cc.Title = Choice.Text
    'cc.ContainerControl_schedule_new1.Category = Choice.Text
    'cc.Show
    WebDialog_schedule_new1.Show
  elseif Item.Caption= "Language" then
    
    if Choice.Text = "Setting" and app.IOActivity = "Super Admin" then
      'dim cc as new WebDialog_setting_menu
      'cc.Left = (self.Width-cc.Width)/2
      'cc.Top = (self.Height-cc.Height)/2
      'cc.Show
      WebDialog_setting_menu1.Show
    elseif Choice.Text = "IT" then
      P_Menu_it
    elseif Choice.Text = "EN" then
      P_Menu_en
    else
      MsgBox("feature only for admin.")
    end if
    
  else
    MsgBox("You are not entitled..."+ Choice.Text)
  end if
  
  
End Sub

A parte l’uso dell’app invece delle session per determinare il livello dell’utente, non vedo grossi problemi

Tranne che, al momento del caricamento invii tutte le dialog sul client e magari non servono tutte.

Io preferisco un’approccio lazy, ovvero creo l’istanza della dialog solo quando serve, assegno con addHandler un metodo per l’evento dismissed e poi la mostro.

In questo modo invio meno dati quando carico la pagina (non ci sono tutte dialog), elimino la dialog quando la chiudo (non sovraccaricando la memoria del browser e del server), posso leggere i dati di competenza nell’evento dismissed.

Eventuali problemi di rete con più client magari potresti averli con un non corretto uso delle connessioni al server db (se usi un server db), ma da questo codice che hai inviato non posso certo dirlo…

[quote=208728:@Antonio Rinaldi]A parte l’uso dell’app invece delle session per determinare il livello dell’utente, non vedo grossi problemi

Tranne che, al momento del caricamento invii tutte le dialog sul client e magari non servono tutte.

Io preferisco un’approccio lazy, ovvero creo l’istanza della dialog solo quando serve, assegno con addHandler un metodo per l’evento dismissed e poi la mostro.

In questo modo invio meno dati quando carico la pagina (non ci sono tutte dialog), elimino la dialog quando la chiudo (non sovraccaricando la memoria del browser e del server), posso leggere i dati di competenza nell’evento dismissed.

Eventuali problemi di rete con più client magari potresti averli con un non corretto uso delle connessioni al server db (se usi un server db), ma da questo codice che hai inviato non posso certo dirlo…[/quote]

ciao Rinaldi, allora ho cambiato lo scenario, che da stando i primi risultati positivi, vale a dire ho inserito le dialog nella webpage master, eliminati tutti gli open inserendo lo status show, e devo dire che come primo impatto e migliorato tantissimo, non solo in tempi che si sono stazionati da 1 a max 2 secondi, ma xojo non si chiude con crash inaspettati.

Vediamo come si prosegue, ma già così comincio ad avere più soddisfazione, quello che non capisco e che quando non uso app e si chiude ho notato che si chiude di colpo anche ad altro utente.

Ciao Ivano,
secondo me, ma pu chiarirci le idee Antonio Rinaldi quando l’applicazione va in session timeout, e a tutti gli utenti si chiude la sessione di utilizzo, potrebbe essere che si usaro app. invece di session. cosa ne dici ?

[quote=209017:@Luigi Arena]Ciao Ivano,
secondo me, ma può chiarirci le idee Antonio Rinaldi quando l’applicazione va in session timeout, e a tutti gli utenti si chiude la sessione di utilizzo, potrebbe essere che si è usaro app. invece di session. cosa ne dici ?[/quote]

non ho idea, ma la cosa assurda che succede solo in remoto.

La chiusura di una sessione utente non implica in nessun modo la chiusura delle altre sessioni.

L’unico modo in cui puoi avere questo effetto in realt mandando in crash l’applicazione per cui questa viene terminata e quindi interrompe tutte le sessioni.

[quote=209743:@Antonio Rinaldi]La chiusura di una sessione utente non implica in nessun modo la chiusura delle altre sessioni.

L’unico modo in cui puoi avere questo effetto è in realtà mandando in crash l’applicazione per cui questa viene terminata e quindi interrompe tutte le sessioni.[/quote]

quindi devo capire cosa manda in crash applicazione in se, cosa che in locale non succede mai…

altra cosa Antonio, qual’è la procedura se sai, che quando uno digita www.miosito.it fa partire app senza per forza chiamare www.miosito.it/miaapp.cgi.

ti ringrazio per la tua disponibilità

possiamo scambiarci dei contatti personali per avere un dialogo, dici che possibile!

Dipende dal server.
In genere si fa con .htaccess

io ho un HostGator semplice con cgi, tutto gira abbastanza bene, ma dovr passare ad un serve dedicato o qualcosa di pi prestante, ma mi rimane sempre il problema dopo tot minuti si chiude che io stia lavorando o no

“the application has gone off-line plase try again later”

e con htaccess non ho idea che inserire

Options +ExecCGI
order allow,deny
deny from all
<Files *.cgi>
allow from all
</Files>

La chiusura con quel messaggio indica sicuramente un problema nell’app, come ti ho detto probabilmente nella chiusura della sessione o proprio nell’uso vai ad intervenire in qualche modo sull’app o esegui un errore che fatale per l’app.

Se non te lo fa un debug con pi browser collegati evidentemente, e quindi non riesci a tracciare direttamente dall’IDE l’errore devi provare innanzi tutto a farlo alla “vecchia maniera” ovvero loggando tutto quello che puoi loggare (timestamp + msg)
Alla fine seguendo nel codice l’interruzione arriverai a capire cosa fai di sbagliato (anche se sul web pu essere un po’ pi difficile del solito)

Altro metodo (se proprio non riesci ad individuare nulla) una specie di metodo dicotomico:
Inizi a levare delle sezioni. Se continua l’errore probabilmente nelle sezioni rimanenti. Se non lo fa nella parte levata.

[quote=209813:@Antonio Rinaldi]La chiusura con quel messaggio indica sicuramente un problema nell’app, come ti ho detto probabilmente nella chiusura della sessione o proprio nell’uso vai ad intervenire in qualche modo sull’app o esegui un errore che è fatale per l’app.

Se non te lo fa un debug con più browser collegati evidentemente, e quindi non riesci a tracciare direttamente dall’IDE l’errore devi provare innanzi tutto a farlo alla “vecchia maniera” ovvero loggando tutto quello che puoi loggare (timestamp + msg)
Alla fine seguendo nel codice l’interruzione arriverai a capire cosa fai di sbagliato (anche se sul web può essere un po’ più difficile del solito)

Altro metodo (se proprio non riesci ad individuare nulla) è una specie di metodo dicotomico:
Inizi a levare delle sezioni. Se continua l’errore probabilmente è nelle sezioni rimanenti. Se non lo fa è nella parte levata.[/quote]

bel mistero, comunque questo lo fa anche se non faccio nulla, dopo tot tempo si chiude, ma sarebbe giusto, ma se io cmq muovo lo scroll su e giù, quindi tengo sessione sempre viva, lui cmq cade lo stesso, senza aver fatto nulla come operazione

Ivano, dai un occhio qui per la redirect del sito

l’arte dell’uso del .htaccess :wink:

Attenzione ad usarlo bene, se scrivi cose sbagliate il sito non funzioner o far cose strane … (ovvero quello che in realt hai scritto)

Ma usandolo bene si possono fare cose notevoli!

Mi raccomando sempre una copia di quello che modifichi. :slight_smile:

Allora io sono arrivato a questo, ridisegnato tutto il db e modo d’uso, cambiati alcuni codici e rimodellato l’interfacia

  1. hostgator un server non affidabile, non solo mi sono ritrovato il server gi pi volte, ma addirittura la mia root vuota
  2. ho acquistato una copia di mamp pro
  3. installato tutti i servizi cgi compreso
  4. simulo l’intera app senza problemi
  5. i crash si sono azzerati
  6. la velocit non posso tenerla conto ma anche con il sistema mamp pro gira velocissimo senza intoppi
  7. ora quasi quasi faccio un noip e punto alla mia macchina per vedere che succede, nel caso ordino un ip statico a casa e metto il puntamento del sito alla mia macchina
  8. se non smonti e rimonti e non studi non arrivi da nessuna parte.

essendo ancora acerbo io nella sezione web, devo dire che faccio fatica a capire certe cose, che se devo dire la verit, sono stanco di capirle hahahah.