Hi Mike, > I am a little confused by your response, since my question > was in regard to > sleep( milliseconds), which I need in order to save CPU in a loop that > checks resource availability. Any browser would wait just > fine for a couple > of hundred milliseconds.
If this is the case, why put the check into a loop at all? If the system needs a tiny bit of time before the resource can respond, then just let it run as is. I understand "why" you want a sleep() function, but I would consider carefully it's implications before using it in a Web application. > BTW, I am doing exactly what you suggest, rethinking my > application. Until > now it worked just fine, under Tango 2000, never had a > problem. It still > works OK now, under Witango 5 in a test environment, but I > feel uneasy to > move it into the production because I did not test it in a > real, multiuser > environment. The big problem is I lack understanding of how > to deal with > multi-threading when no controlling mechanism is available > for managing > threads. I guess we must be missing a piece of the puzzle here, as to specifically what multi-threading concerns you have. If the issue revolves around a particular database query that has a habit of taking a long time, then you will be happy to learn that "threading" under Witango 5.x Servers are greatly improved. Tango2000 used "co-operative" threading, whereas Witango 5.x uses "pre-emptive" threading. This is an automatic build-in feature of the Server. If resources get scarce, then Witango will respond with greater speed and efficiency then Tango2000 ever can. The CPU usage spawned by the "waiting" will be reasonably managed - if it's not, then this is the point where "I" would rethink what I'm doing. But yes, managing your own Threading is a great advantage too - I also do .NET development. But even with this kind of power, if a process is going to routinely take a long time, then it's time to rethink the application design. I recently did a Custom Reporting application. Another department of my customer was supplying these huge XML files full of Financial figures (200mb+), and my Web app was dynamically parsing the XML for particular content and displaying them for the web - simple enough work. But....the processing was incredibly time/CPU intensive for each request, because the files were so huge, that the user was waiting up to 10 seconds for responses. So, I did a complete rebuild of the project where I built a Windows Service application that pre-parsed the XML files into smaller more manageable chunks. Instead of one big file, I now have 200 tiny ones. The project got carried away because the sample XML files I started with were less than 1mb - next time I'll think further ahead. Hope this helps.... > Mike Bravu. > > -----Original Message----- > From: Scott Cadillac [mailto:[EMAIL PROTECTED] > Sent: Thursday, April 22, 2004 11:03 > To: [EMAIL PROTECTED] > Subject: RE: Witango-Talk: Sleep & While + explanations > > Hi Mike, > > With regards to your wishful thinking of a sleep() function > in Witango, I > think you need to rethink your application a bit. > > Regardless of the development platform that may, or may not, support a > "sleep" or "wait" process - the client component (browser) of > your "Web" > application has limited tolerance for such a thing. > > Browsers don't like waiting. Although you can craft some > special HTTP output > to make a browser wait (checkout the "Push" attribute), the > results are not > always User friendly. > > I would suggest building a special webpage/window that > periodically "checks" > with the Server if the requested resource is free yet. You > can do this with > JavaScript, or with a META Refresh - and also provide Users > with intelligent > messages. > > I know this is not a simple solution from a developer point > of view, because > it's more in the interest of the end-user - but who said > programming would > be easy? > > ----- > And although it has been a long time coming, I understand an > <@WHILE> Meta > tag will be coming in version 5.5 (or 6.0?). > > > Hope this helps. Cheers.... > > (Note: new phone number April 26th: 403-254-5002) > > Scott Cadillac, > 403-281-6090 ~ [EMAIL PROTECTED] > ------------ > XML-Extranet ~ http://xmlx.ca ~ http://forums.xmlx.ca Well-formed > Programming in C# .NET, Witango, MSIE and XML > ------------ > IExtranet ~ http://iextranet.ca > Witango ~ http://witango.org > EasyXSLT ~ http://easyxslt.ca > IIS Watcher ~ http://iiswatcher.ca > ------------ > > > > > > ________________________________ > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Thursday, April 22, 2004 10:25 AM > To: [EMAIL PROTECTED] > Subject: RE: Witango-Talk: Sleep & While + explanations > > > > I need sleep() (on the server side) to wait for > availability on a > locked resource ( without loading the CPU ). > If I use an external procedure (dos wait) I am not sure > what is the > delay needed to load the DOS interpreter; and I would prefer > not to bind the > the solution to an OS. Java can solve all this (provided it is already > loaded) but I was curious to see if somebody found a simpler way. > > I was aware of while action and that would work just > fine; however > that means I end up fragmenting a results page action; I'd > rather use <@FOR> > if I can make it act as a while (which can be done in all programming > languages that I know), but I found no way to do that with witango. > > I wonder, since there are <@TIMER> and <@FOR> metatags, why not > <@SLEEP> and <@WHILE> as well? They are obviously closely > related and I > assume they cannot be that difficult to implement... > > > Thank you for all your suggestions. > Mike Bravu. > > > > > ________________________________ > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Thursday, April 22, 2004 03:28 > To: [EMAIL PROTECTED] > Subject: Witango-Talk: Sleep & While > > > Hello all, > > Can anybody help me out with the Witango equivalents for: > 1- sleep( milliseconds ); and > 2- while( true ) { } > > The solutions that I found are not acceptable: > 1- except for using externals, if I try to use > <@TIMER> it seems I > burn the CPU, which is not what I want; > 2- <@FOR> </@FOR> does not really work or I do not know how to > setup Start/Step/Stop > > If the solution is already explained in the documentation I > apologize, I just could not find it. > > > Thank you, > Mike Bravu > > ______________________________________________________________ > __________ > TO UNSUBSCRIBE: Go to > http://www.witango.com/developer/maillist.taf > > > ______________________________________________________________ > __________ > TO UNSUBSCRIBE: Go to > http://www.witango.com/developer/maillist.taf > > > > > ______________________________________________________________ > __________ > TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf > > ______________________________________________________________ > __________ > TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf > ________________________________________________________________________ TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
