PHP 中的非线程安全是否对数据库 CRUD 有影响


Does non thread safe in PHP have implications on database CRUD?

我已经阅读了几篇关于SO的文章和答案。 当涉及到数据库插入、删除等时,线程安全是否重要? 例如,是否可以在错误的记录中插入某些内容? 如果我放弃"安全",究竟会受到什么影响?

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

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

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

这里有两个问题:

1( PHP 线程安全吗?

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

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

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

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