5 ms·
As any European user of HN knows too well, when you send tiny chunks separated by a few ms a time up to TCP, the majority of the planet will get a jittery half-
by forgotusername 15y ago
As any European user of HN knows too well, when you send tiny chunks separated by a few ms a time up to TCP, the majority of the planet will get a jittery half-rendered experience of your home page lasting seconds for a handful of actual kb downloaded.
The better question might be "if you want to turn it off, the question is why", or something.
- ars 15y agoUsing one ob_start() could make sense for certain cases. But 16 of them? I can't think of any reason to nest ob_start 16 levels deep.
- masklinn 15y agoI'm thinking various components, each doing its own ob_start() for its output, something like that.
- Jach 15y agoMe neither, I'd be interested in the use case for that many. A few years ago I made a PHP-based template system that had one nested buffer to have a poor-man's eval of template (HTML with display-logic PHP) files, it just boiled down to: ob_start(); include $file; $contents = ob_get_contents(); ob_end_clean();
- lox 15y agoYup, this is common. If you put this in a function and use extract you can create a clean working space for a template where you can use $vars without worrying about polluting scope. I'd assume the 16x calls would be because they have a very complicated set of templates/layouts/partials, all doing their own templating.
- Jach 15y agoThat's actually exactly what I was doing in the full context. I can see 16 calls over the lifetime of the request, but what was confusing me was how they could have 16 nested calls forming some ob_start();ob_start();...ob_end_flush(); Maybe some crazy way to avoid having to return text up the tree through function returns. But I read the post again and it said nothing about nesting them, so it's probably just something like 16 sub-templates or whatever as you suggest being processed at different intervals, not necessarily nested, with the gc not collecting frequently enough.
- ars 15y ago> with the gc not collecting frequently enough. PHP is written in C which is not garbage collected. PHP itself collects garbage, but this buffer is an internal C buffer and would be released immediately.
- Jach 15y ago...Yeah, not sure what I was thinking with that one, thanks for replying. (My excuse! I've been up over 24 hours already...)
- nawariata 15y agoThis is common approach in MVC frameworks, where every view (template/partial/widget) is rendered independently and then injected into main template.
- badger7 15y agoshudder