Skip to content

Simple and powerful threads emulation component for PHP (based on forks).

License

Notifications You must be signed in to change notification settings

Anizoptera/AzaThread

 
 

Repository files navigation

AzaThread

Simple and powerful threads emulation component for PHP (based on forks). Old name - CThread.

https://github.com/Anizoptera/AzaThread

Build Status

Table of Contents

  1. Introduction
  2. Requirements
  3. Installation
  4. Documentation and examples
  5. Tests
  6. Credits
  7. License
  8. Links

Introduction

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;

Requirements

  • 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).

Installation

The recommended way to install AzaThread is through composer. You can see package information on Packagist.

{
	"require": {
		"aza/thread": "~1.0"
	}
}

Documentation and examples

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

Tests are in the Tests folder. To run them, you need PHPUnit. Example:

$ phpunit --configuration phpunit.xml.dist

Credits

AzaThread is a part of Anizoptera CMF, written by Amal Samally (amal.samally at gmail.com) and AzaGroup team.

License

Released under the MIT license.

Links