Technically speaking, usually for each instance of a page load PHP runs in its own "thread" for just that "hit"/instance, and whatever timeout is set for it, as long as it's not contrary to some "master" configuration setting in php.ini that can't be overridden at runtime, it will actually run for that entire duration even if the browser page times out while waiting for a response.
But, it's possible that your local Windows version of PHP/Apache isn't set to be "threaded" like that. Adjusting that on Windows is not my area of expertise so I can't help with that.

That said, I offer the following:

- have you tried reworking your export script for better efficiency? 45 minutes for 100,000 products sounds excessive. Screams of missing db indexes that related to the queries being run, or missed opportunities to cache frequent queries or even remember already-retrieved data instead of looking it up again. Or queries that are adjusted to do optimized lookup joins on other tables all at once instead of doing lots of extra queries for each product being looped-over.

- you could try adjusting things so your script can be run from the command-line, like a cron job. I realize this is less intuitive in a Windows environment. The currency_cron script is one example.

- Don't tell anyone I told you this, but if you open your Admin's Whos-Online screen and click the option to refresh the page every 5 minutes, it'll keep reloading that page ... and if you're running that export script in another tab on the same browser it may remember the session and keep it open by virtue of the other one auto-refreshing.