blogdaren/phpforker

一个用PHP编写的简单多进程编程骨架,从Workerman中吸取了很多经验,移除了网络事件库的部分,通过个人编程实现了以下两个方面的目标:

v1.0.4 2020-03-10 16:49 UTC

This package is auto-updated.

Last update: 2024-09-24 10:25:21 UTC


README

这是什么?

一个用PHP编写的简单多进程编程骨架,从Workerman中吸取了很多经验,移除了网络事件库的部分,通过个人编程实现了以下两个方面的目标:

  • 帮助我们了解PHP多进程编程
  • 帮助我们了解Workerman核心的工作原理

PHPForker是什么?

PHPForker是一个PHP多进程编程骨架,借鉴了Workerman的许多优秀编程思想,剥离了其中的网络事件库抽象部分,专注于多进程编程。为了便于直观调试和保持最轻的多进程骨架,因此简单内嵌了一个基于select多路复用技术的TCP & UDP Server。为了学习如此优秀的Workerman框架,作者亲自进行了实践,本项目旨在深入学习和分享。

  • 理解PHP多进程编程的核心思想
  • 理解Workerman内核的工作原理

特别说明

PHPForker仅是一个用于学习研究的实验性工作,因此不要在生产环境中使用它,除非您了解自己在做什么,最好使用官方Workerman

特别说明

PHPForker只是一个用于学习研究的实验性项目,所以不要在生产环境中使用它,请使用官方Workerman,除非你知道自己在做什么。

安装

composer require blogdaren/phpforker

先决条件

  • >= PHP 5.3
  • POSIX兼容的操作系统(Linux, OSX, BSD)
  • PHP的POSIX扩展
  • PHP的PCNTL扩展

用法

<?php
//require_once dirname(__DIR__). '/Autoloader.php';
require_once __DIR__. '/vendor/autoload.php';

use PHPForker\Container;

//imitate...
$totalContainer = 2;
for($i = 1; $i <= $totalContainer; $i++)
{
    $name = "demo-" . $i;
    $socket_name = "tcp://0.0.0.0:2" . str_pad($i, 3, '0', STR_PAD_LEFT);
    $box = new Container($socket_name);
    $box->setPublicProps([
        'name' => $name,
        'count' => 2,
        'user' => 'root',
    ]);
}

Container::start();

截图

demo1

demo2

demo3

demo4

demo6

demo5

相关链接和感谢