GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - a2235565/php-cli-process: 多进程任务 cli模式下执行

BranchesTags
Open more actions menu

Latest commit

 

History

53 Commits
53 Commits

Folders and files

NameName
Last commit message
Last commit date
A
A
 
 
Curl.php
Curl.php
 
 
Daemon.php
Daemon.php
 
 
MsgQueue.php
MsgQueue.php
 
 
ProcessHelp.php
ProcessHelp.php
 
 
README.md
README.md
 
 
Register.php
Register.php
 
 
ShmQueue.php
ShmQueue.php
 
 
Task.php
Task.php
 
 
main.php
main.php
 
 
mainForRedis.php
mainForRedis.php
 
 
unitShm.php
unitShm.php
 
 
unitTest.php
unitTest.php
 
 

Repository files navigation

php-cli-process

  • 多进程 cli模式下执行程序
  • 入口为 main
  • 重启 逻辑 mac kill -30 pid.log linux kill -10 pid.log
  • os 无法使用main ~ 请 使用 mainForRedis 或 mainForShm 脚本运行 执行任务
<?php
require 'ProcessHelp.php';
require 'MsgQueue.php';
require 'Daemon.php';
require 'Task.php';
require 'Curl.php';
require 'Register.php';
//监听信号
Daemon::listenSign();
//进程守护
Daemon::run();
//设置接到重启信号执行内容  #没有软重启的需求忽略#
Daemon::setSigUser1Callback(function (){
    //杀死目前所有任务
    Task::getProcess()->killAll();
    //将队列重新写入新的 进程组 队列
    Task::getProcess()->setMq(Task::getMsgQueue());
    //$number  重新开启几个进程
    $number = 3;
    //你的业务逻辑
    $callback = function(){};
    
    //设置进程数  若不设置则 为启动时设置参数
    Task::getProcess()->setNumber($number);
    //开启
    Task::getProcess()->process(
        function (ProcessHelp $_this) use ($callback) {
            while (true) {
                $msg = $_this->getMq()->pop(1);
                if (is_callable($callback)) {
                    $callback($msg,$_this->getMq());
                }
            }
        }
    );
});

//制造测试队列
$list = [];
for($i=0;$i<100;$i++){
    $list[] = 'http://xxx.cn?a='.$i;
}
//进程数量
$number = 5;
//任务主体
$callback = function ($one,MsgQueue $MsgQueue){
    sleep(1);
    echo $one.PHP_EOL;
    file_put_contents(__DIR__.'/test.log',$one,FILE_APPEND);
    echo getmypid().PHP_EOL;
    //假设业务逻辑出错塞回队列
    if(false){
        $MsgQueue->push($one,1);
    }
};
//任务完成回调
$success = function (){
    echo 'task is success';
};

//执行任务
Task::run($list,$number,$callback,$success);

About

多进程任务 cli模式下执行

Topics

climulti-processphpphp-cliphp-processprocess

Resources

Readme
Activity

Stars

7 stars

Watchers

1 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.