从品牌网站建设到网络营销策划,从策略到执行的一站式服务
最近在update我的一个github项目的时候,想要把原来单一进程的模式改成多进程的模式。
超过十多年行业经验,技术领先,服务至上的经营模式,全靠网络和口碑获得客户,为自己降低成本,也就是为客户降低成本。到目前业务范围包括了:成都网站制作、网站建设,成都网站推广,成都网站优化,整体网络托管,微信小程序,微信开发,app软件开发公司,同时也可以让客户的网站和网络营销和我们一样获得订单和生意!
事情是这样的,我做了一个HTTP服务器,支持动态脚本。
在完成了一大堆各种各样的特性后,遇到了一个脚本超时的问题。
在我的HTTP服务器中,将页面分成了Template和Activity两个部分,一个是用做VIEW的,一个是用作MODULE的,也就是类似于ASP啦。
但是,由于NODE.js是单进程的,所以我无法控制Activity中的代码(为用户脚本)。
所以,如果Activity中出现死循环,那么整个http服务器就会因此死掉,所以我想做一个检测脚本超时的特性。
===================================割了==========================
好了,进入正题。
我的想法是这样的,从主进程来接受socket,然后send给子进程,然后由子进程进行相关的操作(包括域名分析、POST读取等行为)之后执行请求的用户Activity。这个字进程每隔一段时间向主进程发送一个alive消息,如果超过了一段时间子进程都没有向主进程发送alive消息,那么主进程就kill掉子进程,防止超时的脚本继续执行,之后新启一个进程代替刚才被kill掉的子进程。
想法是这样的,但是遇到了一些问题。
本以为这个事情可以很轻松的完成,但是在主进程发送socket给子进程后,子进程会绑定一个data事件在传来的socket上。问题来了,在子进程中,如论如何都无法出发data事件。
后经实验,情况是这样的,socket在被主进程发送给子进程之前,客户端发送来的数据就已经发送给主进程了,所以在子进程中没有数据可读,自然就如法出发data事件。
经过修改,我在主进程中读取一个请求数据,然后连socket带第一次读取的数据,一起发送给了子进程。
主进程将socket发送给子进程后,主进程中的socket好像会被自动关闭。好吧,这对我没有影响。
简短的总结:
客户端socket会一次性发送一条请求的全部数据至主进程,子进程读取socket前所有内容都已经被发送给主进程了。
在某个进程发送socket给其他进程后,在本进程内的socket会被标记为已关闭。
希望我的一点点实践可以帮到读到这篇文章的同志。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图