PHP中的非线程安全是否会对数据库CRUD产生影响?

时间:2013-09-23 19:54:44

标签: php iis-7.5 windows-server-2008-r2

我已经阅读了几篇关于SO的文章和答案。在数据库插入,删除等方面,线程安全是否重要?例如,可以在错误的记录中插入某些内容吗?如果我放弃“安全”,到底会得到什么呢?

我正在使用Windows 2008 R2,IIS 7.5。

1 个答案:

答案 0 :(得分:1)

Dagon是正确的 - 线程安全对任何操作都至关重要。

  

例如,可以在错误的记录中插入某些内容吗?

这里有两个问题:

1)PHP线程安全吗?

2)如果它不是线程安全会发生什么?

关于第一个问题,PHP核心引擎是线程安全的并已存在多年。然而,一个有效的PHP安装包含来自各种来源的多个扩展 - 而编写PHP的人无法保证其他人的代码按预期运行。

关于第二个问题,是的,如果代码作为轻量级进程运行并且不是线程安全的,那么你的数据可能会搞砸 - 更有可能它会崩溃:而且因为(AFAIK)线程PHP只能工作使用IIS ISAPI模块(不考虑线程PECL),这意味着它可能会占用整个IIS实例。

但是,在考虑任何这些问题之前,您需要回答的问题是使用ISAPI线程而不是fastCGI和PHP是否有任何好处。就个人而言,出于性能,可靠性的原因,我会避免使用Micorosft平台,更不用说我自己的理智 - 但我有时会参与修复其他人的问题。但是我没有看到任何基准测试显示ISAPI具有任何性能优势,这可以解释为什么它从5.3.0版本开始被删除(在Linux上没有性能优势但是容量提升很小,只有5%左右)。 p>