| Martin Norland 2005-04-29, 3:56 pm |
| David Martínez wrote:
> I suggest you to activate "Output Buffering" at beggining of your code.
> It's so easy and should not modify the output of your code.
> This prevents your error "Headers already sent".
> At the first line of your PHP code, insert "ob_start()" and in the end
> of your code insert "ob_clean_flush()".
>
> If you do not want to use "Output Buffering" you should remove any
> character sent, including Cr Lf (\n\r). I think it's so hard and I don't
> recommend it.
>
> Depending of your server, PHP can evaluate \n\r as nothing or evaluate
> \n\r as an output.
Personally I disagree with this. Yes it's easy, but you should never
enable a feature to fix a bug or problem when it can be tracked down
(although obviously in time critical situations, using it as a 'band
aid' is - sometimes - necessary). With a quick pointer he was able to
find it, and not impact the performance of his web server (output
buffering will take more memory - since it's obviously buffering all the
output)
More importantly though, with output buffering - no content is sent to
the client until you flush - in your suggestion at the end. This isn't
always an issue since many scripts do much of their processing at the
top anyway, but if nothing is sent to the browser - the users will (the
majority of the time) see the page they "were" on, and continue
interacting with it thinking their request didn't go through. This will
only increase load on your server and, depending on what the users are
doing (and how your backend is written) could throw someone or something
into a state of confusion.
cheers,
--
- Martin Norland, Sys Admin / Database / Web Developer, International
Outreach x3257
The opinion(s) contained within this email do not necessarily represent
those of St. Jude Children's Research Hospital.
|