Concurrency web应用程序中的并发问题

Concurrency web应用程序中的并发问题,concurrency,lamp,Concurrency,Lamp,在我开始做网络编程之前,我认为这很容易。现在,经过一年的经验,我认为这真的很难,主要是因为并发问题 因为这是一个非常意外的发现,我试着问我更有经验的朋友(他们制作了一些像电子商店等的应用程序)。具体地说,我问他们你是否真的有需要解决的并发问题,或者你的数据有变得不一致的危险,他们说:“嗯,从来没有想过。”。这让我有点担心自己的理智,甚至连一些令人筋疲力尽的网络搜索都不能令人信服地回答这个问题 因此,在这里,我要确保我的思想轨道不会导致一个非常白色的蜂窝状房间: 1) 假设LAMP框架,apach

在我开始做网络编程之前,我认为这很容易。现在,经过一年的经验,我认为这真的很难,主要是因为并发问题

因为这是一个非常意外的发现,我试着问我更有经验的朋友(他们制作了一些像电子商店等的应用程序)。具体地说,我问他们你是否真的有需要解决的并发问题,或者你的数据有变得不一致的危险,他们说:“嗯,从来没有想过。”。这让我有点担心自己的理智,甚至连一些令人筋疲力尽的网络搜索都不能令人信服地回答这个问题

因此,在这里,我要确保我的思想轨道不会导致一个非常白色的蜂窝状房间:

1) 假设LAMP框架,apache运行的两个php脚本是否可能以任何可能的方式在执行中重叠

2) 同一脚本是否可能在同一时间运行多次,其实例是否以任何可能的方式重叠

3) LAMP的选择很重要吗?还是像今天使用的任何web开发环境一样,LAMP的选择也很重要

4) 如果并发真的会成为一个问题,而且我不是在瞎编,那么有没有什么理论可以帮助我像这样绞尽脑汁解决这些问题:“嘿,看,可能存在并发问题”过了一会儿,“嘿,这是一个X的经典示例,可以这样解决”

5) 为什么程序员倾向于将web开发视为不“洁净”,而认为他们可以轻松地完成它?(没必要回答这个问题,但我现在很生气,因为我知道我以前也是这样)


我知道,从stackoverflow的角度来看,这可能是一个非常糟糕的一般性问题,但我身边没有人真正有经验可以帮助我。

我真的不认为web应用程序和标准桌面程序之间保护共享资源的原则有太大的不同。资源是资源,一个应用程序可以运行多次,除非您特别禁止多个实例

1) 假设LAMP框架,有可能运行两个php脚本吗 apache是否以任何可能的方式在执行中重叠

对。Apache可以在线程/进程中运行请求。两个PHP脚本请求可以同时运行

2) 同一脚本是否可以同时运行多次 同时,其实例以任何可能的方式重叠

对。Apache可以在线程/进程中运行请求。两个PHP脚本请求可以同时运行

3) 灯的选择是重要的还是同样的事情对你来说很重要 现在有没有使用过web开发环境

Apache有在多个线程中运行请求的方法。还有其他服务器使用异步方法。无论哪种方式,您都不应该依赖web服务器来防止代码中的并发操作。这是代码检查资源的责任

4) 如果并发性真的会成为一个问题,而我不仅仅是在 总而言之,有没有什么理论能帮助我清醒过来 围绕它解决这些问题,就像这样:“嘿,看,有一个 可能的并发性问题”,过了一会儿:“嘿,这是一个经典的 X的示例,可通过这种方式解决”

这实际上取决于代码的资源和共享的内容。例如,如果脚本需要使用文件系统,那么您的代码应该通过某种类型的同步进行检查。数据库倾向于通过对行或表的内部锁定来为您处理这一问题

5) 为什么程序员倾向于认为web开发不是 “犹太教”却认为他们可以轻松做到?(无需回答 这个但那个事实现在让我很生气,因为我知道它曾经是 (我也一样)


我相信那些不知道如何进行网页设计(尤其是服务器端)的人会认为这一切都只是键入word文档。一旦你这样做了,你就会意识到这需要做很多工作。

到目前为止,所有这些听起来都是因为你通常害怕并发。发生了什么事让你害怕了?这里没有PHP专家,但我想Apache会同时运行相同的PHP脚本,以防两个客户端的请求重叠。同步可以通过多种方式完成,例如,在文件系统级别或数据库级别。谷歌的“乐观锁定”和“悲观锁定”。@jdi只是我在大学里一直做的都是正常的顺序程序,我只听说过锁定、事务等。所以我现在需要学习很多东西,才能成为一名优秀的开发人员(除了还有整个安全方面的东西……还有很长的路要走:)@VictorSorokin谢谢,我会查一下,我也有相关的问题,所以我在这里得到的是,Django框架没有指定执行请求处理的是进程还是线程,而是由外部容器决定使用什么方法。这与基于JAVA的容器不同。@zinking:您在JAVA中将django与什么进行比较?Django本身是一个web框架,而不是一个服务器。您可以通过应用服务器运行它,该应用服务器将决定它是单进程服务还是多进程服务。