11# clue/reactphp-ndjson [ ![ Build Status] ( https://travis-ci.org/clue/reactphp-ndjson.svg?branch=master )] ( https://travis-ci.org/clue/reactphp-ndjson )
22
3- Streaming newline delimited JSON ([ NDJSON] ( http://ndjson.org/ ) ) parser and encoder for ReactPHP.
4-
5- ** Table of Contents**
3+ Streaming newline-delimited JSON ([ NDJSON] ( http://ndjson.org/ ) ) parser and encoder for [ ReactPHP] ( https://reactphp.org/ ) .
4+
5+ [ NDJSON] ( http://ndjson.org/ ) can be used to store multiple JSON records in a
6+ file to store any kind of (uniform) structured data, such as a list of user
7+ objects or log entries. It uses a simple newline character between each
8+ individual record and as such can be both used for efficient persistence and
9+ simple append-style operations. This also allows it to be used in a streaming
10+ context, such as a simple inter-process commmunication (IPC) protocol or for a
11+ remote procedure call (RPC) mechanism.
12+
13+ * ** Standard interfaces** -
14+ Allows easy integration with existing higher-level components by implementing
15+ ReactPHP's standard streaming interfaces.
16+ * ** Lightweight, SOLID design** -
17+ Provides a thin abstraction that is [ * just good enough* ] ( https://en.wikipedia.org/wiki/Principle_of_good_enough )
18+ and does not get in your way.
19+ Builds on top of well-tested components and well-established concepts instead of reinventing the wheel.
20+ * ** Good test coverage** -
21+ Comes with an [ automated tests suite] ( #tests ) and is regularly tested in the * real world*
22+
23+ ** Table of contents**
624
725* [ Usage] ( #usage )
826 * [ Decoder] ( #decoder )
@@ -200,18 +218,24 @@ For more details, see ReactPHP's
200218The recommended way to install this library is [ through Composer] ( https://getcomposer.org ) .
201219[ New to Composer?] ( https://getcomposer.org/doc/00-intro.md )
202220
221+ This project follows [ SemVer] ( https://semver.org/ ) .
203222This will install the latest supported version:
204223
205224``` bash
206- $ composer require clue/ndjson-react:^0.1.2
225+ $ composer require clue/ndjson-react:^1.0
207226```
208227
209228See also the [ CHANGELOG] ( CHANGELOG.md ) for details about version upgrades.
210229
230+ This project aims to run on any platform and thus does not require any PHP
231+ extensions and supports running on legacy PHP 5.3 through current PHP 7+ and
232+ HHVM.
233+ It's * highly recommended to use PHP 7+* for this project.
234+
211235## Tests
212236
213237To run the test suite, you first need to clone this repo and then install all
214- dependencies [ through Composer] ( http ://getcomposer.org) :
238+ dependencies [ through Composer] ( https ://getcomposer.org) :
215239
216240``` bash
217241$ composer install
@@ -225,18 +249,25 @@ $ php vendor/bin/phpunit
225249
226250## License
227251
228- MIT
252+ This project is released under the permissive [ MIT license] ( LICENSE ) .
253+
254+ > Did you know that I offer custom development services and issuing invoices for
255+ sponsorships of releases and for contributions? Contact me (@clue ) for details.
229256
230257## More
231258
232259* If you want to learn more about processing streams of data, refer to the documentation of
233260 the underlying [ react/stream] ( https://github.com/reactphp/stream ) component.
234261
235- * If you want to process compressed NDJSON files (` .ndjson.gz ` file extension)
262+ * If you want to process compressed NDJSON files (` .ndjson.gz ` file extension),
236263 you may want to use [ clue/reactphp-zlib] ( https://github.com/clue/reactphp-zlib )
237264 on the compressed input stream before passing the decompressed stream to the NDJSON decoder.
238265
239- * If you want to create compressed NDJSON files (` .ndjson.gz ` file extension)
266+ * If you want to create compressed NDJSON files (` .ndjson.gz ` file extension),
240267 you may want to use [ clue/reactphp-zlib] ( https://github.com/clue/reactphp-zlib )
241268 on the resulting NDJSON encoder output stream before passing the compressed
242269 stream to the file output stream.
270+
271+ * If you want to concurrently process the records from your NDJSON stream,
272+ you may want to use [ clue/reactphp-flux] ( https://github.com/clue/reactphp-flux )
273+ to concurrently process many (but not too many) records at once.
0 commit comments