Quantcast
Channel: 半冷半暖秋天 » PHP脚本语言
Viewing all articles
Browse latest Browse all 3

又爱又恨php

$
0
0

从05开始接触php到现在,少说也有7,8年时间了,中间拿它写过玩儿的Blog系统,写过商用系统,写过各类辅助开发的工具,还用它来抓取过黄图无数。并且于去年,它还几乎救过项目组一命,当时如果不是在两天左右的时间用php写出对账程序,那1亿多RMB的错账真无法想法怎么办。

因为以前用的都只是用于B/S系统或者跑的cli版本,在单进程模式下就从来没有出过错。但前段时间,我想把它嵌入到多线程环境C++程序中做为脚本引擎,却发现问题多多,前后一个星期的努力让我几乎想放弃。php现在都出6版本了,发布的二进制也有所谓的thread-safe版本,但是这东西并不像它宣称的那样可靠。

目前发现的问题,也是我最需要的,动态加载模块功能无法在多线程环境使用,一加载运行一段脚本后便Core dumped。并且php在一个进程中仅能存在一个引擎实例,所有加载的模块都动态挂在这个实例下。虽然借助php的线程资源管理器TSRM可以在线程中初始化各自的数据结构,使得看起来也支持多线程,即同一进程内多个线程可同时执行php代码而无不影响,但前面那个限制却还是让人非常的不爽。脚本引擎内嵌的多线程支持可使用这个sapi模块:http://svn.tobin.nl/public/php/embed2/trunk

我也考虑过换其它对嵌入C环境、多线程支持更好的脚本语言(或解析器),比如javascript(google V8)、perl、python等,但都因为要么那些语言对各类数据库的访问无成熟的模块,要么是我不熟悉的,如果马上应用到项目开发进度无法保证而不敢动手。


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images