It seems that flush forces everything through, so it isn't required

If you want complete control, when and where the output is sent then you should use the output control functions provided by PHP.