Giter VIP home page Giter VIP logo

background-process's Introduction

cocur/background-process

Start processes in the background that continue running when the PHP process exists.

Latest Stable Version Build Status Windows Build status Code Coverage

Installation

You can install Cocur\BackgroundProcess using Composer:

$ composer require cocur/background-process

Usage

The following example will execute the command sleep 5 in the background. Thus, if you run the following script either in the browser or in the command line it will finish executing instantly.

use Cocur\BackgroundProcess\BackgroundProcess;

$process = new BackgroundProcess('sleep 5');
$process->run();

You can retrieve the process ID (PID) of the process and check if it's running:

use Cocur\BackgroundProcess\BackgroundProcess;

$process = new BackgroundProcess('sleep 5');
$process->run();

echo sprintf('Crunching numbers in process %d', $process->getPid());
while ($process->isRunning()) {
    echo '.';
    sleep(1);
}
echo "\nDone.\n";

If the process runs you can stop it:

// ...
if ($process->isRunning()) {
    $process->stop();
}

Please note: If the parent process continues to run while the child process(es) run(s) in the background you should use a more robust solution, for example, the Symfony Process component.

Windows Support

Since Version 0.5 Cocur\BackgroundProcess has basic support for Windows included. However, support is very limited at this time. You can run processes in the background, but it is not possible to direct the output into a file and you can not retrieve the process ID (PID), check if a process is running and stop a running process.

In practice, the following methods will throw an exception if called on a Windows system:

  • Cocur\BackgroundProcess\BackgroundProcess::getPid()
  • Cocur\BackgroundProcess\BackgroundProcess::isRunning()
  • Cocur\BackgroundProcess\BackgroundProcess::stop()

Create with existing PID

If you have a long running process and store its PID in the database you might want to check at a later point (when you don't have the BackgroundProcess object anymore) whether the process is still running and stop the process.

use Cocur\BackgroundProcess\BackgroundProcess;

$process = BackgroundProcess::createFromPID($pid);
$process->isRunning(); // -> true
$process->stop();      // -> true

Change Log

Version 0.7 (11 February 2017)

Version 0.6 (10 July 2016)

  • #17 Add ability to append to file on Unix/Linux-based systems (by bpolaszek)

Version 0.5 (24 October 2015)

  • Added basic support for Windows

Version 0.4 (2 April 2014)

  • Moved repository to Cocur organization
  • Changed namespace to Cocur
  • PSR-4 compatible namespace
  • #3 Added BackgroundProcess::stop() (by florianeckerstorfer)

Version 0.3 (15 November 2013)

  • Changed namespace to Braincrafted

Author

Florian Eckerstorfer

License

The MIT license applies to cocur/background-process. For the full copyright and license information, please view the LICENSE file distributed with this source code.

background-process's People

Contributors

samyoul avatar bpolaszek avatar bitdeli-chef avatar socieboy avatar sponno avatar mhor avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.