mirror of
https://github.com/php/php-src.git
synced 2026-04-19 14:01:01 +02:00
We're currently splitting up large writes into 8K size chunks, which adversely affects I/O performance in some cases. Splitting up writes doesn't make a lot of sense, as we already must have a backing buffer, so there is no memory/performance tradeoff to be made here. This change disables the write chunking at the stream layer, but retains the current retry loop for partial writes. In particular network writes will typically only write part of the data for large writes, so we need to keep the retry loop to preserve backwards compatibility. If issues due to this change turn up, chunking should be reintroduced at lower levels where it is needed to avoid issues for specific streams, rather than unnecessarily enforcing it for all streams.
47 lines
907 B
PHP
47 lines
907 B
PHP
--TEST--
|
|
int set_file_buffer ( resource $stream , int $buffer );
|
|
--CREDITS--
|
|
marcosptf - <marcosptf@yahoo.com.br> - #phparty7 - @phpsp - novatec/2015 - sao paulo - br
|
|
--FILE--
|
|
<?php
|
|
|
|
class test_wrapper {
|
|
|
|
function stream_open($path, $mode, $openedpath) {
|
|
return true;
|
|
}
|
|
|
|
function stream_eof() {
|
|
return false;
|
|
}
|
|
|
|
function stream_write($data) {
|
|
echo "size: ", strlen($data), "\n";
|
|
return strlen($data);
|
|
}
|
|
|
|
function stream_set_option($option, $arg1, $arg2) {
|
|
echo "option: ", $option, ", ", $arg1, ", ", $arg2, "\n";
|
|
return false;
|
|
}
|
|
}
|
|
|
|
var_dump(stream_wrapper_register('test', 'test_wrapper'));
|
|
$fd = fopen("test://foo","r");
|
|
var_dump(set_file_buffer($fd, 50));
|
|
var_dump(stream_set_chunk_size($fd, 42));
|
|
var_dump(fwrite($fd, str_repeat('0', 70)));
|
|
?>
|
|
--CLEAN--
|
|
<?php
|
|
fclose($fd);
|
|
unset($fd);
|
|
?>
|
|
--EXPECTF--
|
|
bool(true)
|
|
option: %d, %d, %d
|
|
int(%i)
|
|
int(%d)
|
|
size: %d
|
|
int(%d)
|