1
0
mirror of https://github.com/danog/amp.git synced 2024-12-03 09:57:51 +01:00
Go to file
Niklas Keller aab5b5f7cc Update shared documentation files
This is an automated commit. Please report any issues to https://github.com/amphp/website-tools.
2020-07-23 22:41:59 +02:00
docs Update shared documentation files 2020-07-23 22:41:59 +02:00
examples Fix code style and run PsalmTest only on PHP 7.1+ 2020-04-30 06:54:50 +02:00
lib Enforce timer interval as minimum time to execution (#319) 2020-07-14 21:45:35 +02:00
test Enforce timer interval as minimum time to execution (#319) 2020-07-14 21:45:35 +02:00
travis Fix build on Travis (#281) 2019-09-21 23:17:45 +02:00
.editorconfig Fix .editorconfig 2017-07-29 22:21:50 +02:00
.gitattributes Improve meta files 2019-09-21 18:35:24 +02:00
.gitignore Added further Internal\Producer tests 2017-05-02 18:10:10 +02:00
.gitmodules Update to new shared repository 2017-09-27 13:25:40 +02:00
.php_cs.dist Use shared style repo 2019-02-25 23:09:26 -06:00
.travis.yml Enforce timer interval as minimum time to execution (#319) 2020-07-14 21:45:35 +02:00
CHANGELOG.md Change v2.4.5 to be v2.5.0 in changelog 2020-07-14 23:47:18 +02:00
composer.json Enforce timer interval as minimum time to execution (#319) 2020-07-14 21:45:35 +02:00
CONTRIBUTING.md Apply PSR-2 2018-06-18 20:00:01 +02:00
LICENSE Improve meta files 2019-09-21 18:35:24 +02:00
phpunit.xml.dist Fix build on Travis (#281) 2019-09-21 23:17:45 +02:00
psalm.examples.xml Improve call / coroutine / wait types, add psalm test 2020-04-30 06:46:52 +02:00
psalm.xml Improve call / coroutine / wait types, add psalm test 2020-04-30 06:46:52 +02:00
README.md Minor README changes 2019-09-21 23:24:07 +02:00

Amp Logo

Amp

Amp is a non-blocking concurrency framework for PHP. It provides an event loop, promises and streams as a base for asynchronous programming.

Promises in combination with generators are used to build coroutines, which allow writing asynchronous code just like synchronous code, without any callbacks.

Motivation

Traditionally, PHP has a synchronous execution flow, doing one thing at a time. If you query a database, you send the query and wait for the response from the database server in a blocking manner. Once you have the response, you can start doing the next thing.

Instead of sitting there and doing nothing while waiting, we could already send the next database query, or do an HTTP call to an API.

Making use of the time we usually spend on waiting for I/O can speed up the total execution time. The following diagram shows the execution flow with dependencies between the different tasks, once executed sequentially and once concurrently.

Amp allows such concurrent I/O operations while keeping the cognitive load low by avoiding callbacks. Instead, the results of asynchronous operations can be awaited using yield resulting in code which is structured like traditional blocking I/O code while the actual execution flow is handled by Amp.

Installation

This package can be installed as a Composer dependency.

composer require amphp/amp

This installs the basic building blocks for asynchronous applications in PHP. We offer a lot of repositories building on top of this repository, e.g.

Documentation

Documentation can be found on amphp.org as well as in the ./docs directory. Each packages has it's own ./docs directory.

Requirements

This package requires PHP 7.0 or later. Many of the other packages raised their requirement to PHP 7.1. No extensions required!

Optional Extensions

Extensions are only needed if your app necessitates a high numbers of concurrent socket connections, usually this limit is configured up to 1024 file descriptors.

Examples

Examples can be found in the ./examples directory of this repository as well as in the ./examples directory of our other libraries.

Versioning

amphp/amp follows the semver semantic versioning specification like all other amphp packages.

2.x

Supported. We don't have plans to release v3, yet.

1.x

No longer supported. We stopped providing bug fixes 2017-12-31 and stopped providing security fixes 2018-12-31.

Compatible Packages

Compatible packages should use the amphp topic on GitHub.

Security

If you discover any security related issues, please email me@kelunik.com instead of using the issue tracker.

License

The MIT License (MIT). Please see LICENSE for more information.