[Gambas-user] shell command with gb.web.gui

Mayost Sharon sharon at 455.co.il
Tue Dec 8 06:32:36 CET 2020


---------- Original Message -----------
From: Benoît Minisini <g4mba5 at gmail.com>
To: user at lists.gambas-basic.org
Sent: Mon, 7 Dec 2020 21:26:47 +0100
Subject: Re: [Gambas-user] shell command with gb.web.gui

> Le 07/12/2020 à 20:23, Mayost Sharon a écrit :
> > Hello
> > 
> > gambas 3.15.2
> > fedora 32 64 bit
> > 
> > I use gb.web.gui
> > 
> > There's a problem when I finish downloading any file:
> > Event: Finish
> > I run a command through the shell
> > For example I wait 10 seconds "shell sleep 10" (sample only)
> > Indeed it works well as long as I am through the IDE
> > But if I compile and put the file on an HTTPD server in cgi-bin
> > For some reason when he finishes the standby command
> > The entire session is deleted and restarts
> > The thing is that if I execute the same command at the push of a button it works well
> > 
> > Sorry for my English, so I'm attaching a demo
> > Attached are Gambas files
> >
> 
> You must not use SLEEP, because the web server waits for you answer, and 
> you may reach the session timeout (which is five minutes by default).
> 
> You must run your process asynchronously, and use its "Kill" event to 
> get its answer.
> 
> You must understand that your project is normally suspended, and is 
> woken up each time a request is sent by the browser.
> 
> If you run your sub-process synchronously, you may reach the session 
> timeout.
> 
> If you run your sub-process asynchronously, your project will return 
> (almost) immediately and be suspended until the next request, while the 
> sub-process run in the background.
> 
> When your projet wakes up again, if the sub-process has been terminated 
> meanwhile, you should normally get the Kill event immediately, and then 
> you can return the result in the request answer.
> 
> If you want your user think that al is synchronously, you have to 
> disable the GUI when the user starts the action, and enables it back 
> when you get the result of the sub-process.
> 
> I hope it's clearer now, it's a bit difficult to explain in english.
> 
> In other words: don't be synchronous, be asynchronous using the event loop!
> 
> Regards,
> 
> -- 
> Benoît Minisini
> 
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
------- End of Original Message -------

Hello

First: the question is why when I run the same SHELL using the WebButton control event, it works well.

And when I run the same command through the WebFileButton control event, it does not work well.

Anyway, I also tried your advice to run the SHELL in the background like this:

Shell "/ bin / sleep 10" As "Process"

Public Sub Process_Kill ()
  
  
   Message ("Kill")
  
End

The thing is that when he finishes the process he goes into a Kill event
But I get an error:
Null Object In Webform1

It should be noted that "sleep" is just an example
In practice I want to upload a file to the server and perform any conversion on it and it can sometimes take a few seconds.


Thanks


More information about the User mailing list