There were two gotchas that got me with implementing this.
The first - if you use session_name() to change the name of sessions, this will not work. I discovered this by looking at phpinfo() and seeing that is saw a different session name.
At least in Apache, a better way to set the session is in your apache config use
php_value session.name "your custom name"
It goes within the Directory directive, might work in .htaccess - I don't know.
-=-
Secondly - in apache, don't use mod_mpm_prefork.so
That was the problem I had, that's the default in CentOS 7.
The problem is it causes Apache to wait with any additional requests until the upload is finished.
Commenting that module out and using mod_mpm_worker.so instead fixed that problem, and the progress meter worked.