将富文本过滤器修改成可重入的

因为富文本过滤器要以php extension的形式安装到线程安全的apache+php环境中,因此过滤器必须是可重入的(Reentrant)。 bison + flex因为要兼容老的yacc+lex,因此修改成可重入的还是比较麻烦,很多变量都已宏的形式重新定义,并且在yyparse和yylex中传递状态参数yyscan_t

 

如何修改成可重入的呢,概括起来就是在词法文件lex.l内加入%option reentrant bison-bridge,在语法文件grammar.y中加入%pure_parser,再根据bison和flex生成的代码调整一些变量和函数的引用。

 

由于php extension会不断的被php程序所调用,每次调用因为设计到复杂的各类状态,因而很容易出现内存泄露,因此写了个内存池,过滤器开始前初始化池,过滤器结束后清除池

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值