|
Hi, Bob. No, I didn't think a user space object made sense since I didn't need to preserve any of the output HTML from one execution to the next. I realize it could save some memory, but in most cases it would be less than 50K bytes. I use user spaces in CGI programs that need to save and restore state and they work extremely well. I generally use a based data structure whose subfields represent all the state I need to save and restore. Then, I create the space using a randomly generated name, and retrieve the space's pointer, which I use for the data structure. I write the user space's name into a hidden HTML form field which I use upon input to retrieve the pointer again. This way, a single instance of a CGI program can process requests from multiple users. Mel Bob Cozzi wrote: > > Mel, > > Did you consider using a UserSpace object (wich is also limited to > 16Meg) for the HTML buffer? > I'm wondering what the performance difference would be once the space > was created.---Just wondering. > > Bob Cozzi > > > -----Original Message----- > > From: web400-admin@midrange.com > > [mailto:web400-admin@midrange.com] On Behalf Of Mel Rothman > > Sent: Thursday, May 09, 2002 6:19 PM > > To: web400@midrange.com > > Subject: Re: [WEB400] CRTPF appears in HTTP subsystem when > > using CGIDEV2 > > > > > > Brad, there is no need to use ClrHtmlBuffer as the first > > piece of every application. > > > > WrtSection logically clears the buffer whenever *fini is > > written or WrtHtmlToStmf is used. > > > > ClrHtmlBuffer was only recently added to CGIDEV2 specifically > > to allow the programmer to discard the buffered output in > > order to start over again. It's kind of like a rollback and > > WrtSection('*fini') is like a commit. > > > > > > Mel Rothman, CGIDEV2 Author > > IBM eServer Custom Technology Center (CTC), Rochester, > > Minnesota http://www-1.ibm.com/servers/eserver/iseries/service/ctc/ > > http://www.easy400.ibm.it/en > > > > Brad Stone wrote: > > > > > > Although this was one of my concerns in my original post, I guess I > > > didn't think it would be possible, or at least hard to do. > > But, as we > > > have found it is. > > > > > > In my CGIDEV2 manual I specifically state and use the clrhtmlbuffer > > > subprocedure as the first piece of every application. This > > won't stop > > > a looping program from having the problem, but it should help. > > > > > > Thanks for looking into this, Mel. > > > > > > Brad > > > www.bvstool.com > > > > > > On Thu, 09 May 2002 16:45:43 -0500 > > > Mel Rothman <mel@rothmanweb.com> wrote: > > > > I couldn't tell from the job log snippet what the problem > > was, but I > > > > suspected it was a problem with WrtSection's dynamic storage. So, > > > > I modified a copy of > > > > one of my sample programs to loop and the symptoms > > > > appeared. By looking at the > > > > second level text of the messages, I located where in > > > > WrtSection the failure > > > > occurred. CGIDEV2's built-in debugging facilities also > > > > found the problem and > > > > dumped the PSSR into the CGIDEBUG file. > > > > > > > > I'll add to my to-do list your request for a way to find out how > > > > much data has been stored in WrtSection's buffer. I'm thinking of > > > > doing it by adding a second > > > > *nopass parameter to the WrtSection subprocedure. Since > > > > there is already one > > > > *nopass parameter (whether to not add a newline character > > > > to each line), you > > > > would have to code all three parameters. For example: > > > > WrtSection('top main' : > > > > *off : byteswritten). > > > > > > > > I can't make any promises as to when I'll get to it. > > > > > > > > The ClrHtmlBUffer subprocedure already exists (was part > > > > of the September 2001 > > > > update). If you don't have it, refresh your copy of CGIDEV2 from > > > > the easy400 site. > > > > > > > > > > > > Mel Rothman, CGIDEV2 Author > > > > IBM eServer Custom Technology Center (CTC), Rochester, Minnesota > > > > http://www-1.ibm.com/servers/eserver/iseries/service/ctc/ > > > > http://www.easy400.ibm.it/en > > > > > > > > > > > > > > > > Michael Skvarenina wrote: > > > > > > > > > > Excellent! I'm not sure how you could tell from that > > > > joblog snipet what we > > > > > probably exceeded the 16MB limit but I'd suspect you > > > > are correct that the > > > > > programmer caused an endless loop. > > > > > > > > > > I agree also that 16MB is large enough. We've had > > > > situations were we > > > > > intentionally wanted to send more than 16MB but this > > > > just takes too long all > > > > > around to be crafting the data then sending it to the > > > > browser. > > > > > > > > > > What I would like however is a means to check the > > > > buffer size so I can > > > > > determine when to stop filling it. As an example, we > > > > have a program where > > > > > the user build a query by selecting some parameters. > > > > It's not a SQL query > > > > > but basically a set of fields s/he sets on a form then > > > > we build the results > > > > > in our RPG program. Sometimes however they select too > > > > much data and we end > > > > > up filling up the buffer or having long delays before > > > > the page is returned. > > > > > What would be great is a procedure that returns the > > > > current size of the > > > > > buffer so we could decide when we've sent enough and in > > > > the event that they > > > > > exceed our pre-determined size, we would interrupt the > > > > building of the data > > > > > and perhaps return "Too much data, the result has been > > > > truncated" or > > > > > something like that. > > > > > > > > > > And if we can determine the size, then can we also just > > > > clear the buffer > > > > > without sending? In this scenario we may just want to > > > > replace the entire > > > > > buffer with a message that tells they they chose too > > > > mcuh data rather than > > > > > giving then a partal display with the error message at > > > > the end. > > > > > > > > > > Is that possible Mel? > > > > > > > > > > ----- Original Message ----- > > > > > From: "Mel Rothman" <mel@rothmanweb.com> > > > > > To: <web400@midrange.com> > > > > > Sent: Thursday, May 09, 2002 4:54 PM > > > > > Subject: Re: [WEB400] CRTPF appears in HTTP subsystem > > > > when using CGIDEV2 > > > > > > > > > > > I just replicated the problem here in Rochester. > > > > > > > > > > > > First, a little background. > > > > > > > > > > > > Each call to WrtSection adds its output to a > > > > dynamically allocated buffer. > > > > > > Storage is expanded, as required, with the realloc > > > > operation code. When > > > > > > WrtSection receives a request to write the *fini > > > > section, it sends the > > > > > > accumulated data to the browser. > > > > > > > > > > > > The maximum amount of storage that can be allocated > > > > is 16 megabytes. If > > > > > more > > > > > > than 16 MB is accumulated before *fini is received, > > > > the symptoms you > > > > > > encountered occur. > > > > > > > > > > > > In your case, either there is an endless loop > > > > containing one or more calls > > > > > to > > > > > > WrtSection, or the program was intentionally written > > > > to output that much > > > > > data. > > > > > > > > > > > > When I wrote WrtSection, I didn't anticipate that > > > > anyone would send more > > > > > than 16 > > > > > > MB intentionally, and did not check for this > > > > condition. > > > > > > > > > > > > Although I could add code to handle this, it is > > > > probably a better idea to > > > > > leave > > > > > > it as it is to force a runaway loop to fail. > > > > > > > > > > > > By the way, this is the first time this problem has > > > > been reported, which > > > > > seems > > > > > > to support my initial supposition that a 16 MB buffer > > > > is enough. > > > > > > > > > > > > Mel Rothman, CGIDEV2 Author > > > > > > IBM eServer Custom Technology Center (CTC), > > > > Rochester, Minnesota > > > > > > http://www-1.ibm.com/servers/eserver/iseries/service/ctc/ > > > > > > http://www.easy400.ibm.it/en > > > > > > > > > > > > > > > > > > > > > > > > Michael Skvarenina wrote: > > > > > > > > > > > > > > Well we do have a job sitting on a CRTPF right now > > > > and here's what's in > > > > > the > > > > > > > job log. We are wondering what the message about > > > > QZHBCGI may be about. > > > > > > > > > > > > > > Any ideas? > > > > > > > > > > > > > > The length requested for storage allocation is out > > > > of range. > > > > > > > RPG status 00425 caused procedure WRTSECTION in > > > > program > > > > > CGIBIN/CGISRVPGM2 > > > > > > > to stop. > > > > > > > Pointer not set for location referenced. > > > > > > > Suspected program QZHBCGI not found. > > > > > > > Object QZHBCGI in *LIBL type *PGM not found. > > > > > > > Added a symptom to the symptom string that was not > > > > valid. > > > > > > > *** QQQOPTIONS DATA AREA NO LONGER SUPPORTED. > > > > > > > *** USE THE NEW QUERY OPTIONS QAQQINI FILE SUPPORT. > > > > > > > Problem log updated. > > > > > > > Output queue QSCAPAROQ in QSC2857377 already > > > > exists. > > > > > > > File QAPDFCDP in library QSC2857377 already exists. > > > > > > > File QAPDFCDP not created in library QSC2857377. > > > > > > > > > > > > More.. > > > > > > > ----- Original Message ----- > > > > > > > From: "Richard B Baird" > > > > <rbaird@esourceconsulting.com> > > > > > > > To: <web400@midrange.com> > > > > > > > Sent: Thursday, May 09, 2002 9:38 AM > > > > > > > Subject: Re: [WEB400] CRTPF appears in HTTP > > > > subsystem when using CGIDEV2 > > > > > > > > > > > > > > > > > > > > > > > Micheal, > > > > > > > > > > > > > > > > I've had this problem too. I don't remember > > > > exactly what caused it, > > > > > but > > > > > > > > the CRTPF you are seeing is the http server doing > > > > it's thing with > > > > > ab-end > > > > > > > > errors. > > > > > > > > > > > > > > > > Look for job logs and dumps in wrksplf under the > > > > http user ids > > > > > (QTMHHTTP?, > > > > > > > > QTMHTTP1?). you will probably find many. > > > > browse through them and > > > > > I'll > > > > > > > > bet you will find your problem. > > > > > > > > > > > > > > > > Rick > > > > > > > > > > > > > > > > ----original message------ > > > > > > > > I'll admit this message is a bit vague because I > > > > don't have many > > > > > details > > > > > > > > but from time to time our entire CGI HTTP system > > > > stops meaning all our > > > > > > > > users get an HTTP 404 error and when we look into > > > > the QHTTPSVR > > > > > subsystem > > > > > > > > we'll find one of the server jobs doing a CRTPF. > > > > Since at this point > > > > > > > we've > > > > > > > > begun to rely on the HTTP apps working 24x7 we > > > > simply cancel the > > > > > offending > > > > > > > > job and all our clients can then proceed to > > > > connect. > > > > > > > > > > > > > > > > This usually only happens during new program > > > > development but we havn't > > > > > > > been > > > > > > > > able to isolate what causes it. > > > > > > > > > > > > > > > > Has anyone else seen this and if so what was your > > > > solution. > > > > > > > > > > > > _______________________________________________ > > > > This is the Web Enabling the AS400 / iSeries (WEB400) > > > > mailing list > > > > To post a message email: WEB400@midrange.com > > > > To subscribe, unsubscribe, or change list options, > > > > visit: http://lists.midrange.com/cgi-bin/listinfo/web400 > > > > or email: WEB400-request@midrange.com > > > > Before posting, please take a moment to review the > > > > archives > > > > at http://archive.midrange.com/web400. > > > > > > > > > > Bradley V. Stone > > > BVS.Tools > > > www.bvstools.com > > > _______________________________________________ > > > This is the Web Enabling the AS400 / iSeries (WEB400) mailing list > > > To post a message email: WEB400@midrange.com > > > To subscribe, unsubscribe, or change list options, > > > visit: http://lists.midrange.com/cgi-bin/listinfo/web400 > > > or email: WEB400-request@midrange.com > > > Before posting, please take a moment to review the archives > > > at http://archive.midrange.com/web400. > > _______________________________________________ > > This is the Web Enabling the AS400 / iSeries (WEB400) mailing list > > To post a message email: WEB400@midrange.com > > To subscribe, unsubscribe, or change list options, > > visit: http://lists.midrange.com/cgi-bin/listinfo/web400 > > or email: WEB400-request@midrange.com > > Before posting, please take a moment to review the archives > > at http://archive.midrange.com/web400. > > > > > > _______________________________________________ > This is the Web Enabling the AS400 / iSeries (WEB400) mailing list > To post a message email: WEB400@midrange.com > To subscribe, unsubscribe, or change list options, > visit: http://lists.midrange.com/cgi-bin/listinfo/web400 > or email: WEB400-request@midrange.com > Before posting, please take a moment to review the archives > at http://archive.midrange.com/web400.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.