Nginx与非线程安全php..我可以在坚持时假设没有种族条件的情况下进行编码吗


Nginx with non thread safe php ... can I code with the assumption of no race conditions when persisting?

我可能误解了nginx是事件驱动的,而不是进程驱动的(因此,我们不像Apache那样在每个线程中都有mod_php)。我假设,由于我有一个php-cgi实例为所有nginx工作线程运行,因此所有php执行都将是同步的。这是否意味着当我从数据库中访问对象时,在保存数据时不必担心竞争条件?

不确定我的想法是正确的还是完全偏离了底线。

谢谢。我是web编程/数据库/web服务器的新手

"事件驱动"意味着应用程序"坐在那里"等待事件来驱动接下来发生的事情。典型的事件是各种形式的鼠标或键盘活动。

相比之下,"过程驱动"(通常是"过程编程")仅仅意味着有一个程序在"监视"事物,不断地翻腾着它应该做的事情

你可以同时对两者进行编码,但这样做是"一种高级练习"——或者,至少有人认为是这样

现在,种族状况的大问题实际上都是关于可能发生什么纠缠的问题。对于数据库,这里有一个完美的例子:如果您在全局变量中编码返回错误状态,并且代码中的活动之间存在任何时间重叠(通常发生在"事件驱动"环境中,但也可能发生在纯过程编程中),则可能会得到错误消息。想象一下,如果一个线程发生了错误,而一个更快的线程没有错误,但更快的线程随后出现,并将状态设置为成功;有一个条件是"线程安全"编程可以避免的。这只是"竞争条件"的一个例子

只要每个线程的操作是独立的,你就没有竞争条件本身——这完全取决于应用程序的逻辑及其需求——这里没有人能告诉你它们可能是什么,只有开发人员。。。这是航空公司的预订系统吗?。。。