How to disable PHP output buffering

Hi,

I know this has been asked before, but I could not find a definitive
answer.
I tried different solutions, nothing worked.

I have a PHP script that has to do time intensive operations and provide
a
status update from time to time. No way around it.
I built a sample PHP script:

<? @ini_set('zlib.output_compression',0); @ini_set('implicit_flush',1); @ob_end_clean(); ob_end_flush(); $i=0; while($i<10) { echo "$i\n"; ob_flush(); flush(); sleep(1); $i++; } ?>

I have output_buffering = Off in php.ini

In nginx I have
location ~ .php$
{
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;

  gzip off;
  proxy_buffering off;
  fastcgi_keep_conn on;
  fastcgi_buffers       128 1k;  # up to 1k + 128 * 1k
  fastcgi_max_temp_file_size 0;
  fastcgi_buffer_size   1k;
  fastcgi_buffering off;
}

(yeah, I put everything and the kitchen sink)

Server is Ubuntu 13.04, nginx 1.5.9, php 5.4.9

Any ideas?

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,247451,247451#msg-247451

Did you check postpone_output?

http://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output

On Wednesday 12 February 2014 12:03:15 Richard S. wrote:

Did you check postpone_output?

http://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output
[…]

It doesn’t matter since fastcgi_buffering switched off.

wbr, Valentin V. Bartenev

Well, I tried with postpone_output off anyway, no joy.

I verified that gzip is actually off. I’m out of ideas…

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,247451,247479#msg-247479

Don’t forget taking into account browser buffering: depending on which
one
you are using, it waits for a certain amount of data before displaying
anything.
To convince you of that, listen to the incoming network traffic to check
that data is arriving to the client.

That’s a limit upon you cannot do much.

To ensure configuration of the PHP part is done correctly, you can dump
communication between nginx and PHP.

With all that, you should be able to reach some conclusions.

B. R.

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering

Set:

fastcgi_buffering off;

and you’re done.

----appa

I already have fastcgi_buffering off (it was in my original email).

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,247451,247492#msg-247492

— Original message —
From: “gaspy” [email protected]
Date: 13 February 2014, 08:20:21

“To ensure configuration of the PHP part is done correctly, you can dump
communication between nginx and PHP.”

Now that sounds interesting. How can I do this?

Use php process listening on inet/inet6 socket instead UNIX-socket and
tcpdump…

“To ensure configuration of the PHP part is done correctly, you can dump
communication between nginx and PHP.”

Now that sounds interesting. How can I do this?

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,247451,247493#msg-247493

OK, so I modified nginx and php5-fpm to talk on port 9000 and used
tcpdump
to see the traffic. It looks like it worked as packets arrived at 1
second
intervals (the sleep(1) in my code).

However in browser it was still the same.

After more testing, it turns out there’s something in my computer
configuration that’s causing it. Not sure yet if it’s the antivirus or
something else, but trying on different computer worked, as it did
using
lynx on the server.

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,247451,247544#msg-247544

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs