Merge pull request #128 from box/increase_max_read_bytes_for_csv

Increase max read bytes per line for CSV
This commit is contained in:
Adrien Loison 2015-10-22 13:39:18 -07:00
commit 6767386daf

View File

@ -13,6 +13,12 @@ use Box\Spout\Common\Helper\EncodingHelper;
*/ */
class RowIterator implements IteratorInterface class RowIterator implements IteratorInterface
{ {
/**
* If no value is given to stream_get_line(), it defaults to 8192 (which may be too low).
* Alignement with other functions like fgets() is discussed here: https://bugs.php.net/bug.php?id=48421
*/
const MAX_READ_BYTES_PER_LINE = 32768;
/** @var resource Pointer to the CSV file to read */ /** @var resource Pointer to the CSV file to read */
protected $filePointer; protected $filePointer;
@ -147,7 +153,7 @@ class RowIterator implements IteratorInterface
{ {
// Read until the EOL delimiter or EOF is reached. The delimiter's encoding needs to match the CSV's encoding. // Read until the EOL delimiter or EOF is reached. The delimiter's encoding needs to match the CSV's encoding.
$encodedEOLDelimiter = $this->getEncodedEOLDelimiter(); $encodedEOLDelimiter = $this->getEncodedEOLDelimiter();
$encodedLineData = $this->globalFunctionsHelper->stream_get_line($this->filePointer, 0, $encodedEOLDelimiter); $encodedLineData = $this->globalFunctionsHelper->stream_get_line($this->filePointer, self::MAX_READ_BYTES_PER_LINE, $encodedEOLDelimiter);
// If the line could have been read, it can be converted to UTF-8 // If the line could have been read, it can be converted to UTF-8
$utf8EncodedLineData = ($encodedLineData !== false) ? $utf8EncodedLineData = ($encodedLineData !== false) ?