Hmm, very interesting. Actually, part of what I'm doing is re-writing this code altogether. The code here is just the cleanup I've done to make the "current" code work a little better, but I've been rewriting it for a future release, and I've done exactly what that article says: Fork out to a new process to do the data, and then have the "results" page just refresh itself until the process is done.
Since I'm not sure why the browsers are being buggy, I'll just leave it as-is for now, I guess, and just try to get my new version finished up.