我已经阅读了几篇关于 SO 的文章和答案。说到数据库插入、删除等,线程安全重要吗?例如,是否可以在错误的记录中插入某些内容?如果我放弃“安全”,究竟会发生什么?
我正在使用 Windows 2008 R2、IIS 7.5。
我已经阅读了几篇关于 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%)。