Spikehttps://github.com/slince/spike用于与同事远程协作使用内网渗透服务开发APP。在网上找了frp和ngrok;然后我想能不能用php写一个这样的服务软件呢?大家都知道php对多进程多线程不够友好,在windows上也不支持;写服务真的很难;不过好在有ReactPHP,有兴趣的同学可以自行百度,不再赘述ReactPHP。基于ReactPHP的IO多路复用,Spike的性能并不比Frp差多少;下面是我做的一个简单的benchmark,用来测试基于apacheab的http隧道的服务性能;客户端和服务端都在本地,同事电脑上代理http服务。不是特别适合应用场景,简单看一下。从下面的信息可以看出,斯派克的表现似乎稍微好一些,但是这个地方有点不公平。我在做Spike测试的时候,只开启了服务端的日志,客户端的日志是关闭的;而FRP两端的日志都是开启的;不知道怎么关闭frp日志;这里简单提一下,因为Spike的日志IO是同步的,所以日志的读写会消耗一部分性能。提高日志级别,减少日志写入,可以提升很多性能;这个项目是我比较关心的一个工作。证明PHP不仅可以做网站,还可以做服务,还不错。最后一次附加上项目地址:https://github.com/slince/spike欢迎star,欢迎forkSpike:ConcurrencyLevel:10Timetakenfortests:37.727secondsCompleterequests:100Failedrequests:0Totaltransferred:2569900bytesHTMLtransferred:2514600bytesRequestspersecond:2.65[#/sec](平均值)每个请求的时间:3772.747[ms](平均值)每个请求的时间:377.275[ms](所有并发请求的平均值)传输速率:66.52[Kbytes/sec]接收的连接时间(毫秒))minmean[+/-sd]medianmaxConnect:000.403Processing:5333602591.937144096Waiting:5163587592.337014076Total:5343602591.93715centinacertaintimeoftheserveroftherequests(ms)50%371566%379175%382280%384490%397095%401598%405399%4097100%4097(最长请求)Frp:并发级别:10测试时间:38.230secondsC完整请求:100失败请求:0总传输量:2569900字节HTML传输量:2514600字节每秒请求数:2.62[#/sec](平均值)每个请求时间:3823.045[ms](平均值)每个请求时间:382.304[ms](平均值,跨越所有并发请求)传输速率:65.65[Kbytes/sec]receivedConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:000.201Processing:3793650644.438094140Waiting:3603633645.537894124Total:3803650644.438094140一定时间内服务的请求百分比(毫秒)50%380966%384775%390980%392390%402695%405398%412999%4140100%4140(最长请求)
