Comments (5)
@driskell I added the following fix:
- to the internal
Stream
object it will throw aRuntimeException
if therewind
action fails - if
fseek
fails (returns-1
) a newRuntimeException
will be thrown too.
I beleive that's the only thing I can do to help with the issue.
The fix will be release in the next patch version or minor version.
from csv.
@driskell thanks for submitting your bug report. From what I understand the stream wrapper you are using seems to incorrectly report its stream capabilities. If I am correct how do you expect the CSV package to behave 🤔 .
If a strean wrapper does not follow the specification I don't see how the package could prevent the issue you are experiencing.
Also I see you are referring to AWS stream capabilities. Did you look into their documentations to see if you can not change it's behaviour via some specific settings 🤔
If I recall some of AWS stream are not seekable by default, you need to activate the bahviour according to their docs.
from csv.
@nyamsprod It does seem this is less a case of “stream reporting seekability incorrectly” but actually a case of “PHP does not support seekability flag for a custom stream”. There is actually no way for a custom stream wrapper to report that it is unseekable.
I think the key thing here though is still the fact that there are several calls to file system functions without any check on the error response. If these indeed point to remote filesystems then you’ll have an issue. For example even if a stream is seekable and you seek forward and the network connection drops it will fail. Likewise if you have a seek backwards and the stream is using ephemeral storage to cache and the data is lost it will fail too (of course these are hypothetical - but that’s why error checking is necessary)
Would be great to include error checking as it will save developer time on investigation
from csv.
It would be great if the library could however support unseekable streams. It seems there is no reason to seek for any purpose. Even BOM can just be stripped after read, rather than stripping before a read. Any rewind seeks can also be checked - if you’re at position 0 already no need to seek during rewind. Would greatly improve things as the library could then manage seekable streams effortlessly
from csv.
@driskell I added the following fix:
- to the internal
Stream
object it will throw aRuntimeException
if therewind
action fails- if
fseek
fails (returns-1
) a newRuntimeException
will be thrown too.I beleive that's the only thing I can do to help with the issue.
The fix will be release in the next patch version or minor version.
Thanks that would be perfect! It will definitely help to raise problems with incompatible streams sooner - thank you and really appreciate your time looking after this library 👍
from csv.
Related Issues (20)
- Any Idea why I am getting this error? Please help HOT 4
- Prevent character encoding HOT 2
- PHPStan errors with versions 9.9 and 9.10 HOT 2
- Add CSV column filtering and re-ordering during parsing
- How to read from STDIN instead of a file HOT 2
- Is Writer::insertAll() faster than Writer::insertOne() or not? HOT 2
- how to read csv without BOM? HOT 4
- getRecords from PART of columns and random sort HOT 2
- getRecords with defined header produce wrong results HOT 1
- Add object mapping HOT 12
- Enable protection against long lines HOT 6
- Preformatting data before conversion HOT 3
- TabularDataReader::getRecords()->current() can return NULL HOT 3
- php version is locked to 8.1, it causes issues with php upgrade to 8.2 or greater HOT 1
- Parsing CSV with escape character before enclosure HOT 2
- Feature request: Trim parsed csv strings HOT 2
- Since 9.12.0 TabularDataReader::getRecords is stricter - exception is thrown with string keys for header HOT 10
- Enclosure not works properly HOT 2
- Is there a simple way to format xls into csv before write/read on it
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from csv.