nest socket protocol
PHP
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
logs
nsp
.gitignore
README.md
client.php
restart
server.ini
server.php

README.md

协议

传输协议:

0-10    长度
10-end  数据

请求协议:

{ 
    type:[call|register|shell|run], //类型 
    function:[function|command],    //功能
    param:params                    //参数
}

返回协议:

{
    stdout:             //输出
    stderr:             //错误
    status:             //状态码
}

服务端处理逻辑:

  1. 解析协议得到数据部分
  2. 从数据部分解析数据结构,得到类型,调用,参数
  3. 根据类型处理调用和参数
    1. call,有几种方式
      1. 临时文件,生成代码执行临时文件,并序列化返回值输出,通过管道得到输出并反序列化再输出结果或错误
      2. 直接加载,并调用执行,得到结果并返回,需要捕获异常和错误
      3. 通过PHP的proc函数调用子进程执行并返回结果
    2. register,则将param做为data写入到类空间
    3. command,调用子进程执行并返回结果
  4. 结果部分需要封装成返回协议