php写sever的问题

之前用php写的一个线上server,遇到一些问题,比较难以解决,忘高人赐教,记录如下:

1.在ulimint打开的情况下,如果存在隐式的递归,导致内存耗尽,并不是总是会产生core文件。

    之前有人能产生core文件,但是大部分人都是产生了一个fetal error。意思就是说,这个内存是php从系统统一申请的内存,被耗尽了之后被php自身检测到了,抛出了fetal error。

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 523800 bytes)

2.产生fetal error之后,我试图通过error_handler去捕捉,发现fetal error无法捕捉。

以上的两点非常重要,因为server长时间运行,且逻辑复杂,难免会产生隐式的无线递归调用。虽然php加入了新的gc机制,但是比起java还有别的,gc做的可以说还是比较单薄,server挂掉的情况还是会有发生。

而fetal error又无法捕捉,core文件又无法生成,所以调试起来格外困难。

目前的解决方案是,整个server框架用c++来写,逻辑层用php写,server框架通过popen调用逻辑层的php入口。这样php执行的生命周期也比较短,不太容易出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值