We also ran into issues with browsers just timing out with extended redirect or 
also loop sessions.  There is a cure, and once you get set up to use it, you 
can run huge numbers of actions over and over again, with no time-outs.

This is what I think of as the "volleyball" method.

1] Get a set of parameters ready to run, such as a set of unique ids. Set as a 
user variable <@var user$idnumbers>

2] Set a USER variable counter to zero  <@var user$counter>
        Note that it's usually a great idea to use some sort of weird name for 
the counter to avoid having it accidentally changed by another program on the 
same session using the same simple one. We usually just pre-pend a letter to 
counter, like pcounter, mcounter , etc

3] Redirect to the action that will be doing all of the work
        <@arg _function> = updater

4] The first step is to update the counter by 1

5] Pull the next item from your array <@var user$idnumbers[@@user$counter,1]>
        If that item is EMPTY, you are done. Put in a test and stop in that 
case.

6] If the item is not empty, proceed to the action

7] Once it is done, do a redirect to the same action (that is doing all of the 
work)

You can use this method for 1000's of times with no issue. Just be SURE to 
include that test in step 5.  Else you'll see a lot of browser bouncing on 
nothingness.

And the browser has to stay running, of course.

Semi-graphically speaking…

IF <@arg _function> is empty

        SELECT idnumbers
                <@assign name="user$idnumbers" value="@@request$resultset">
                <@assign name="user$counter" value="0">
        IF idnumbers[1,1] is not MT
                redirect to <@arg _function> = updater

ELSEIF <@arg _function> = updater

        <@assign name="user$counter" value="<@calc expr='@@user$counter + 1'>">
        <@assign name="request$id" value="<@var 
user$idnumbers[@@user$counter,1]>">
        IF @@request$id is empty
                DONE!
                return
        do whatever is needed, no matter how complicated, here.
                Including redirects to other tafs, etc.
        When you are done

        redirect to this taf, this function. And over and over and over
        It is good practice to set the refresh to something greater than zero. 
If things are happening quickly, that can cause issues. We usually set to 2 or 
3, though you can probably set it to 1 safely.

Voila.

Essentially a loop function, but at a higher level, and appearing "new" to the 
browser on each step



On Aug 15, 2011, at 11:37 AM, Robert Shubert wrote:

> Steve,
>
> It’s true that browsers have limiters to prevent infinite redirect loops.
>
> How are you handling the redirect? Which method?
>
> Robert
>
> From: Fogelson, Steve [mailto:[email protected]]
> Sent: Sunday, August 14, 2011 10:54 PM
> To: [email protected]
> Subject: Witango-Talk: Re-Directs
>
> Found something a little odd. I wrote a taf to import data into a db table. 
> Because of the size I have broken it into increments of 500 records at a time 
> and then redirect to the same taf until finished.
>
> I am using IE 8.0 and for some reason it fails after 10 redirects. I changed 
> the number of records from 10 to 500 and it always fails after 10 redirects.
>
> I couldn’t determine why, so I tried FireFox. It paused after 20 redirects 
> and displayed a message indicating a possible problem with the redirect.
>
> Is there a “check” programmed into BROWSERs to prevent runaway re-directs?
>
> If so, is there a work around for this.
>
> What happens when this is ran as a cron?
>
> Thanks
>
> Steve Fogelson
> Internet Commerce Solutions
>
> To unsubscribe from this list, please send an email to [email protected] 
> with "unsubscribe witango-talk" in the body.
>
> To unsubscribe from this list, please send an email to 
> [email protected] "unsubscribe witango-talk" in the body.



----------------------------------------

To unsubscribe from this list, please send an email to [email protected] 
with "unsubscribe witango-talk" in the body.

Reply via email to