Yes, this code works and I am using it, too. But the
documentation says,
you can use
$r->read($buf, $r->headers_in->{'content-length'}
this statement reads the entire request content in one iteration by
using a read buffer size equal to the content-length of the request.
I'm not sure if there is anything wrong with it, seems like a
good way
to slurp the request content.
If the request content is large and you are performing a memory
intensive operation on each chunk then you might want to read
in a while
loop as in your first example and perform some work on each chunk, so
that the overall memory usage is low.
Please read my initial posting:
...
But there are two problems with
$r->read($buf, $r->headers_in->{'content-length'}
1. An input filter can change the length of the incoming content. It can
be longer than before, but the content-length header will not be
changed, so some data will be missing.
2. If the POST data are sent per chunked encoding, there is no
content-length header at all.
Peter