Simple and powerful threads emulation component for PHP (based on forks). Old name - CThread.
https://github.com/Anizoptera/AzaThread
Features:
- Uses forks to operate asynchronously;
- Supports synchronous compatibility mode if there are no required extensions;
- Reuse of the child processes;
- Full exchange of data between processes. Sending arguments, receiving results;
- Transfer of events between the "thread" and the parent process;
- Working with a thread pool with preservation of multiple use, passing arguments and receiving results;
- Uses libevent with socket pairs for efficient inter-process communication;
- Supports two variants of data serialization for transfer (igbinary, native php serialization);
- Errors handling;
- Timeouts for work, child process waiting, initialization;
- Maximum performance and customization;
- PHP 5.3.3 (or later);
- Unix system;
- libevent;
- pcntl;
- posix;
- AzaLibevent - will be installed automatically with composer;
- AzaSocket - will be installed automatically with composer;
- AzaCliBase - will be installed automatically with composer;
NOTE: You can use synchronous compatibility mode even without requirements (or on windows, for example).
The recommended way to install AzaThread is through composer. You can see package information on Packagist.
{
"require": {
"aza/thread": "~1.0"
}
}
See full documentation and main examples. Documentation is available in several languages!
Other examples can be seen in the file examples/example.php and in unit test Tests/ThreadTest.php.
You can also run the performance tests, choose the number of threads and pick the best settings for your system configuration by using examples/speed_test.php.
Tests are in the Tests
folder.
To run them, you need PHPUnit.
Example:
$ phpunit --configuration phpunit.xml.dist
AzaThread is a part of Anizoptera CMF, written by Amal Samally (amal.samally at gmail.com) and AzaGroup team.
Released under the MIT license.
- Mail list (via Google Group)
- Composer package
- Last build on the Travis CI
- Project profile on the Ohloh
- (RU) AzaThread — многопоточность для PHP с блэкджеком
- Other Anizoptera CMF components on the GitHub / Packagist
- (RU) AzaGroup team blog