浏览 3967 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-25
php手册上回答: 引用 PHP 是粘合剂。它将几十种第三方的库粘合到一起来创建很酷的 web 应用,并通过很直观且易于学习的语言界面使其看上去好像一个整体。PHP 的灵活与强大依赖于底层平台的稳定与耐用。起码需要将一个可运作的操作系统,一个可运作的 web 服务器以及可运作的第三方库粘合起来。其中任何一方不运作了,PHP 都需要有方法来识别出问题并且快速解决。如果没有完全独立的执行线程,完全独立的内存单元和稳定的空间对付每个请求,那底层架构就太复杂以至于不稳定因素更容易进入到 PHP 系统中。
如果必须要用线程化的 MPM,看看 FastCGI 配置,使 PHP 运行于自己独立的内存空间中。 最后需要指出,不使用线程化 MPM 的警告在 Windows 系统中没那么强烈,因为 Windows 中的大多数库都理应在多线程下安全运行。 我这里没怎么看懂,他说的是因为多线程的MPM本身不稳定啊还是多线程的MPM会造成PHP不稳定啊?又为什么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-25
是很多第三库多线程不安全。
|
|
返回顶楼 | |
发表时间:2008-07-26
iunknown 写道 是很多第三库多线程不安全。 既然不推荐php和多线程一起用,那么在配置fastcgi模式时,每个进程也必须一个线程? 对吗? |
|
返回顶楼 | |
发表时间:2008-07-26
xombat 写道 iunknown 写道 是很多第三库多线程不安全。
既然不推荐php和多线程一起用,那么在配置fastcgi模式时,每个进程也必须一个线程? 对吗? apache 1.3 系列,在 unix/linux 平台,主要是用 prefork 模型,这个就是多进程模型,每个进程同一时间只服务一个请求。在 apache 2.x 系列中,在 unix/linux 平台,增加了 worker 模型,同样也是有多个进程,但是每个进程内部会创建多个线程,也就是同一个进程在同一时间会服务多个请求。在 worker 模型中,如果用了多线程不安全的函数,那么就有可能导致出错。例如:如果程序里面用了 char *ctime(const time_t *clock); 这一类使用了内部 static 内存的函数,就有可能产生非预期的结果。 目前针对 apache 的主要的 fastcgi 实现主要是 http://www.fastcgi.com/ 和 http://fastcgi.coremail.cn/doc.htm 。 看过 coremail fastcgi 的一些实现代码,它的 fcgid 有自己的 process manager,fcgid 的模型目前只有 prefork 一种。apache 和 fcgid 之间用 unix domain socket 来通信。这也就是说,如果使用 coremail 的实现,那么 apache 配置成什么模型,并没有关系,因为 php 实际是运行在 fcgid 控制的子进程中,而不是 apache 的子进程中。 对于其他的 http 服务器的 fastcgi 实现没有具体看过,不太了解情况。 |
|
返回顶楼 | |