1

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

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

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

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

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

3) LAMP 的选择是否重要,或者与今天使用的任何 Web 开发环境一样吗?

4)如果并发真的可能是一个问题而且我不只是在编造事情,是否有任何理论可以帮助我解决这些问题并解决这些问题:“嘿,看,可能存在并发问题” 又过了一会:“哎,这是X的一个经典例子,可以这样解决”。

5) 为什么程序员倾向于将 Web 开发视为不“犹太教”,同时认为他们可以轻松做到这一点?(无需回答这个问题,但这个事实让我很生气,虽然我知道它曾经和我一样)

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

4

1 回答 1

3

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

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

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

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

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

3) LAMP 的选择是否重要,或者与今天使用的任何 Web 开发环境一样吗?

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

4)如果并发真的可能是一个问题而且我不只是在编造事情,是否有任何理论可以帮助我解决这些问题并解决这些问题:“嘿,看,可能存在并发问题” 又过了一会:“哎,这是X的一个经典例子,可以这样解决”。

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

5) 为什么程序员倾向于将 Web 开发视为不“犹太教”,同时认为他们可以轻松做到这一点?(无需回答这个问题,但这个事实让我很生气,虽然我知道它曾经和我一样)

我敢肯定,不知道如何进行网页设计(尤其是服务器端)的人认为这一切都只是输入 word 文档。一旦你这样做了,你就会意识到它的工作量很大。

于 2012-07-14T22:58:12.337 回答