It is currently Sat Feb 04, 2012 3:36 pm

All times are UTC + 2 hours [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: output_buffering problem: PHP page cannot load fully. Help.
PostPosted: Mon Nov 23, 2009 3:56 pm 
Offline

Joined: Wed Dec 20, 2006 5:28 am
Posts: 6
Location: MENTAL HOSPITAL
I have a PHP page that runs flawlessly on Apache 2.2.8 (for Windows), PHP 5.2.5 (for Windows), and Windows XP.

Now I am to deploy the PHP on the production server. It is CentOS 4.2 (32-bit x86), with Apache 2.2.14 and PHP 5.2.11. Both Apache and PHP are compiled, with all the needed components. The compilation process ran smoothly.

However, my PHP page only loads partially in the production server. The production server's never loads the page fully, ie, when showing the codes in a browser, it never reaches the closing </html> part. And it has nothing to do with bandwitdh either, I have tried browsing locally from the server itself.

I have to admit that my php page is quite large, about 9 kilobytes. It also has a lot of "echo" commands. The page also contains a lot of tab.

Recently I found out that it has something to do with output_buffering parameter in php.ini. Starting from zero, if I increase the output_buffering value, the loaded portion of my PHP page also increases. So I think if I max the output_buffering value, my PHP page will be fully loaded by the server.

Alas, that's not the case.

See, when I reach certain value, the loaded portion of the PHP page decreases again. The page reaches its biggest portion in output_buffering=1024. Increasing it to 1025, for example, doesn't change anything. But when I set it to 1210, the

Here's what happen when I set output_buffering=0. The page does not load fully, it only shows the HTML header and the toolbar.
Image
output_buffering=0

At output_buffering=512, more portions of the PHP page starts to show up, evident by the code lines below the toolbar.
Image
output_buffering=512

Apparently, output_buffering=1024 is the "optimum" setting, although it still fails to load the PHP page fully. The page you see below is not the full PHP page, by the way.
Image
output_buffering=1024

I don't know if it is relevant, but originally, the php.ini has extension_dir = './' Problem is, I don't know what does it mean by './' (is it /usr/local/apache2/php ? is it /usr/local/apache2/lib ?). On the other hand, I need to dl php_mapscript.so into my PHP page, which I put in PHP installation prefix (/usr/local/apache2/php). So I hardcoded the extension_dir into '/usr/local/apache2/php'.

In short, what's wrong? Why the production server cannot load my PHP page fully? What should I do? Please help. :(


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 23, 2009 4:16 pm 
Offline

Joined: Wed Dec 20, 2006 5:28 am
Posts: 6
Location: MENTAL HOSPITAL
By the way, I forgot to mention, but I also tried using implicit_flush = On. When I use implicit_flush = On with output_buffer = 0, it works just exactly like using implicit_flush = Off with output_buffer = 1024.

However, increasing output_buffer with implicit_flush = On does not improve the situation. For example, using implicit_flush = On with output_buffer = 1024 does not fully load the PHP page either. Seems like nothing can fully load my PHP page.

What's wrong? What happens?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 24, 2009 1:03 pm 
Offline

Joined: Wed Dec 20, 2006 5:28 am
Posts: 6
Location: MENTAL HOSPITAL
Ah, I've just found something new: the same output_buffering value does not always give consistent result.

For example, I just set output_buffering value to 3650, which showed most (alas, not the entire) of my PHP page. But about five minutes later, the same 3650 value just gave me a totally blank page (just like when I'm using output_buffering=On)

By the way, and I don't know if it's relevant, but it is a production server, which is also used by the "primary" website and a web mail server.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Nov 28, 2009 3:16 pm 
Offline

Joined: Wed Dec 20, 2006 5:28 am
Posts: 6
Location: MENTAL HOSPITAL
Problem solved: I eventually use fgs, which comes with ready-to-use Apache and PHP binary, instead of using my own compiled Apache/PHP. And it works. It now shows my PHP page fully instead of being truncated.

I don't understand what happens to my own compiled PHP/Apache though. Maybe because I'm using CentOS 4.2? Maybe the libraries needed for compilation are already old?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC + 2 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron