|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2010-01-18 12:50 UTC] svn@php.net
[2010-01-18 12:50 UTC] iliaa@php.net
[2010-02-03 20:21 UTC] svn@php.net
[2011-02-16 18:33 UTC] cataphract@php.net
-Status: Closed
+Status: Re-Opened
-Assigned To:
+Assigned To: cataphract
[2011-02-16 18:33 UTC] cataphract@php.net
[2011-02-16 18:43 UTC] cataphract@php.net
[2011-02-19 02:43 UTC] cataphract@php.net
-Status: Re-Opened
+Status: Closed
[2011-02-19 02:43 UTC] cataphract@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 07:00:01 2025 UTC |
Description: ------------ Socket streams do not implement the PHP_STREAM_OPTION_WRITE_BUFFER call, and the stream chunk size is always fixed at 8192 bytes. This is not a problem with SOCK_STREAM type sockets, but with SOCK_DGRAM is breaks the datagrams if they are more than 8192 bytes (which is IMHO a bug). Here is a patch against 5.3.1 to add support for stream_set_write_buffer() with socket streams: --- main/streams/xp_socket.c.orig 2010-01-17 19:56:39.000000000 +0100 +++ main/streams/xp_socket.c 2010-01-17 19:59:34.000000000 +0100 @@ -266,6 +266,7 @@ int oldmode, flags; php_netstream_data_t *sock = (php_netstream_data_t*)stream->abstract; php_stream_xport_param *xparam; + size_t size; switch(option) { case PHP_STREAM_OPTION_CHECK_LIVENESS: @@ -400,6 +401,14 @@ return PHP_STREAM_OPTION_RETURN_NOTIMPL; } + case PHP_STREAM_OPTION_WRITE_BUFFER: + if (ptrparam) + size = *(size_t *)ptrparam; + else + size = PHP_SOCK_CHUNK_SIZE; + php_stream_set_chunk_size(stream, size); + return PHP_STREAM_OPTION_RETURN_OK; + default: return PHP_STREAM_OPTION_RETURN_NOTIMPL; }