公司项目是类似于群晖做linux服务相关的,
因为涉及太多linux命令,原来项目linux操作部份是直接php调shell命令完成 , 现在公司想重构一下, 用c++来处理linux部份,还想加个redis, 用redis的发布订阅功能来解耦php与c++,  最终打算php做请求转发,需要调linux命令时就向redis的c++频道发布操作参数, c++订阅收到处理后向php频道发布操作结果,php收到再记录数据库我感觉这样设计的话,因为php请求都是操作命令后马上向前端返回数据,这样就导致需要发布给c++后写长连接等待结果才返回前端。不能很清楚redis的发布订阅这样设计合适吗,不知道再会有什么隐患,各位有经验的吧友,这样设计有问题吗。

解决方案 »

  1.   

    能用PHP 调用SHELL处理的东西要用到C++来处理么?我建议你考虑其他语言,开发成本怎么样都比C++舒坦。
      

  2.   

    我是做php的, C++成本就不是我考虑的了换成其它语言处理linux命令,也可能提出要搞个redis来解耦公司有两个系统,1个centos6, 1个centos7,就改了前端 据说是版本差异会影响到原先shell的命令,再加上一个很大原因招不到运维的人:), 领导就打算用C++来封装一下shell命令,再这样背景下又要加入redis来解耦,redis发布订阅好像没有同步功能,导致我这边php发个指令都需要有个长链接等结果,理论可以,但感觉有点怪。上网又找不到有这种例子, 不想搞特殊化,就过来请教下这样架构合适吗,总感觉有点坑
      

  3.   

    谢邀。可以考虑异步通知的方式吗,PHP在执行完写参数后,立刻返回结果告知等待,C++执行完成后再CallBack
      

  4.   


    php订阅到信息后已经找不到http对应返回了结果异步的话只能做保存数据库的操作等不用与前端交互的操作可前端请求大部份都是需要马上获取结果的非要异步只能再前端定时轮询结果,这样更麻烦
      

  5.   

    一个请求要跑很久吗 之前也接触过C++的服务器端的东西,这个逻辑其实不是要用什么服务器端的问题 而是C++如果快速的响应请求并且返回结果.也就是异步应该在C++处理,处理结束后怎么去通知前端输出给用户。