PHP Classes

PHP Daemon: Create processes to run PHP code in parallel

Recommend this page to a friend!
  Info   View files Example   View files View files (7)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 145 This week: 1All time: 9,133 This week: 571Up
Version License PHP version Categories
phpdaemon 1.0.0Public Domain7PHP 5, Language
Description 

Author

This package can create processes to run PHP code in parallel.

It can start a parallel process using the pcntl extension to run one or more sections of PHP code at the same time.

The process code is passed as a closure that can be an anonymous function.

Picture of LexI
Name: LexI <contact>
Classes: 1 package by
Country: Russian Federation Russian Federation
Age: ???
All time rank: 4282117 in Russian Federation Russian Federation
Week rank: 420 Up26 in Russian Federation Russian Federation Up

Example

<?php
/**
 * @author ??????? ??????????
 * bigguest@gmail.com
 */

namespace Pav\Daemon;

spl_autoload_register(function ($class) {
   
$class = str_replace(__NAMESPACE__.'\\','',$class);
    if (
strstr($class, 'Interface')) {
        require
dirname(__FILE__) . "/Interfaces/{$class}.php";
    } elseif (
strstr($class, 'Trait')) {
        require
dirname(__FILE__) . "/Traits/{$class}.php";
    } else {
        require
dirname(__FILE__) . "/Classes/{$class}.php";
    }
});

Log::$debug = true;

$child_pid = pcntl_fork();
if (
$child_pid) {
   
// ??????? ?? ?????????????, ???????????? ? ???????, ????????
   
exit();
}
// ?????? ???????? ????????? ????????.
posix_setsid();

$baseDir = dirname(__FILE__);
ini_set('error_log', $baseDir . '/error.log');
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen($baseDir . '/application.log', 'ab');
$STDERR = fopen($baseDir . '/daemon.log', 'ab');

/*????????? ???????????? ?? ???????*/
declare(ticks=1);
pcntl_signal_dispatch();

$daemon = new DaemonClass(
    new
WorkerConfig(
        function (
$config) {
           
/*@todo ???? ??????, ??????????? ???????? ??????*/
           
var_dump($config);

           
gc_collect_cycles();
            exit();
        }
    )
);

/*????????? ????????? ???????, ??????? ?????? run c ???????? ???????? ???????*/
foreach ([1, 2, 3, 4, 5, 6, 7, 8] as $source) {
   
$daemon->run($source);
}

Log::w(time() . ": ??? ?????? ?????????");


  Files folder image Files  
File Role Description
Files folder imageClasses (3 files)
Files folder imageInterfaces (1 file)
Files folder imageTraits (1 file)
Plain text file daemon.php Example Example script
Plain text file README.md Doc. Documentation

  Files folder image Files  /  Classes  
File Role Description
  Plain text file DaemonClass.php Class Class source
  Plain text file Log.php Class Class source
  Plain text file WorkerConfig.php Class Class source

  Files folder image Files  /  Interfaces  
File Role Description
  Plain text file LogInterface.php Class Class source

  Files folder image Files  /  Traits  
File Role Description
  Plain text file LogRequiredPropertiesTrait.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:145
This week:1
All time:9,133
This week:571Up