Skip to content

Latest commit

 

History

History
62 lines (47 loc) · 2.71 KB

README.md

File metadata and controls

62 lines (47 loc) · 2.71 KB

PHP Async Process

Process functions or files asynchronously without needing AMP, ReactPHP, RxPHP, Fibers, Pthreads, Parallel, Revolt, Pcntl or Swoole.

Just raw PHP! It is magic!

codecov Test Coverage Psalm type coverage Psalm level Test Run Status Codacy Badge Maintainability License Packagist Downloads

It uses a combination of:

  • serializable-clojure lib
  • Symfony/Process lib
  • and PHP's native Shmop extension

Warning

it does not works on MSYS or MINGW terminals! However, It will work fine on both Windows (cmd and powershell) and Linux.

See demos/demo.php for examples.

Installation

composer require terremoth/php-async

Documentation

<?php

require_once 'vendor/autoload.php';

use Terremoth\Async\PhpFile;
use Terremoth\Async\Process;

$process = new Process();
$process->send(function () {
    /*
    // anything you want to process here
    // Important note: do not use closure vars, like:
    // $process->send(function () use ($var1, $var2, ...)  { ... });
    // since the closure will be processed in another file.
    // Write everything you want without outside dependencies here
    // In a future version I will create communications variables between both processes
    */
});

// Another way to use is if you want to just process a file Asynchronously, you can do this:
$args = ['--verbose', '-n', '123'];
$asyncFile = new PhpFile('existing-php-file.php', $args); // make sure to pass the correct file with its path
$asyncFile->run();

That's it!