1
0
mirror of https://github.com/danog/parallel.git synced 2024-12-02 09:37:57 +01:00
parallel/README.md

57 lines
3.1 KiB
Markdown
Raw Normal View History

2017-11-30 01:27:30 +01:00
<p align="center">
2017-12-08 05:23:48 +01:00
<a href="https://amphp.org/parallel"><img src="https://raw.githubusercontent.com/amphp/logo/master/repos/parallel.png?v=12-07-2017" alt="parallel"/></a>
2017-11-30 01:27:30 +01:00
</p>
2015-07-10 22:15:42 +02:00
2017-11-30 01:27:30 +01:00
<p align="center">
2017-12-08 05:23:48 +01:00
<a href="https://travis-ci.org/amphp/parallel"><img src="https://img.shields.io/travis/amphp/parallel/master.svg?style=flat-square" alt="Build Status"/></a>
<a href="https://coveralls.io/github/amphp/parallel?branch=master"><img src="https://img.shields.io/coveralls/amphp/parallel/master.svg?style=flat-square" alt="Code Coverage"/></a>
<a href="https://github.com/amphp/parallel/releases"><img src="https://img.shields.io/github/release/amphp/parallel.svg?style=flat-square" alt="Release"/></a>
<a href="https://github.com/amphp/parallel/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="License"/></a>
2017-11-30 01:27:30 +01:00
</p>
2017-07-18 05:59:56 +02:00
2017-12-08 05:23:48 +01:00
<p align="center"><strong>True parallel processing using multiple processes or native threads for concurrent PHP code execution, <em>without</em> blocking, no extensions required.</strong></p>
2015-07-15 18:29:35 +02:00
2017-12-08 05:23:48 +01:00
<hr/>
2017-12-09 00:53:12 +01:00
`amphp/parallel` is a component for [Amp](https://amphp.org) that provides native threading, multiprocessing, process synchronization, shared memory, and task workers for concurrently executing PHP code. Like other Amp components, this library uses [Coroutines](http://amphp.org/amp/coroutines/) built from [Promises](http://amphp.org/amp/promises/) and [Generators](http://www.php.net/manual/en/language.generators.overview.php) to make writing asynchronous code more like writing synchronous code.
2015-09-28 06:45:56 +02:00
To be as flexible as possible, this library comes with a collection of non-blocking concurrency tools that can be used independently as needed, as well as an "opinionated" worker API that allows you to assign units of work to a pool of worker threads or processes.
2017-11-30 01:27:30 +01:00
## Installation
2017-11-30 01:27:30 +01:00
This package can be installed as a [Composer](https://getcomposer.org/) dependency.
2015-07-15 18:29:35 +02:00
2017-11-30 01:27:30 +01:00
```bash
2017-12-04 18:49:31 +01:00
composer require amphp/parallel
2017-11-30 01:27:30 +01:00
```
2015-09-28 06:45:56 +02:00
2017-11-30 01:27:30 +01:00
## Requirements
2015-09-28 06:45:56 +02:00
2017-11-30 01:27:30 +01:00
- PHP 7.0+ (no extensions required)
2015-09-28 06:45:56 +02:00
2017-11-30 01:27:30 +01:00
## Documentation
2015-09-28 06:45:56 +02:00
2017-12-02 13:48:18 +01:00
Documentation can be found on [amphp.org/parallel](https://amphp.org/parallel/) as well as in the [`./docs`](./docs) directory.
2017-11-30 01:27:30 +01:00
## Versioning
2015-09-28 06:45:56 +02:00
2017-12-04 18:49:31 +01:00
`amphp/parallel` follows the [semver](http://semver.org/) semantic versioning specification like all other `amphp` packages.
2015-09-28 06:45:56 +02:00
2017-11-30 01:27:30 +01:00
## Security
If you discover any security related issues, please email [`me@kelunik.com`](mailto:me@kelunik.com) instead of using the issue tracker.
## License
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information.
2017-11-30 01:27:30 +01:00
## Development and Contributing
2015-09-28 06:45:56 +02:00
Want to hack on the source? A [Vagrant](http://vagrantup.com) box is provided with the repository to give a common development environment for running concurrent threads and processes, and comes with a bunch of handy tools and scripts for testing and experimentation.
Starting up and logging into the virtual machine is as simple as
vagrant up && vagrant ssh
Once inside the VM, you can install PHP extensions with [Pickle](https://github.com/FriendsOfPHP/pickle), switch versions with `newphp VERSION`, and test for memory leaks with [Valgrind](http://valgrind.org).