我已经读过PHP的“可能”弱点是它处理“并发”的方式。只有会话和cookie来跟踪用户状态,PHP如何高精度地处理以下情况:
多个用户签出一个只有1个库存库存的商品(对不起语法错误,但你已经得到了图片)
多个用户使用相同的登录详细信息登录同一个用户帐户
多个用户同时编辑同一图像(虽然这在现实生活中很少发生)
或需要多线程处理的任何其他事务
(如果我在这里误用了条款,我道歉)
答案 0 :(得分:5)
这些不一定是PHP的问题。考虑到任何选择的技术,这些都是开发人员要克服的问题。
答案 1 :(得分:4)
这些不是真正的并发问题。虽然PHP作为一个环境缺乏线程功能,但任何使用PHP模块的Web服务器都将拥有多个线程,每个线程都有自己的活动PHP环境,所有线程都使用相同的资源。您可能会遇到Java,.Net,Perl或任何其他Web应用程序语言的这些问题。
据我所知,没有语言使用线程来完成任何这些任务。由于HTTP通信的无状态特性,cookie是会话是每种 Web语言的支柱,所以无论你使用什么平台,你都会在所有这些平台上看到非常相同的策略处理特定问题。
答案 2 :(得分:1)
答案 3 :(得分:0)
就像所有语言一样,您需要找到一些锁定这些文件的方法。如果您不熟悉并发性,可以从here开始,并对可用的不同方法进行一些研究。
但我真正的问题是这实际上是否会成为一个问题。如果你要进入一个高并发系统,那么碰撞时的损坏程度会有多高。如果碰撞的成本非常高,那么可能会将工作外包给那些已经开始研究并且只关注他们使用的方法的人。
答案 4 :(得分:0)
你听说过数据库交易吗?如果使用得当,这些可以解决所有问题(顺便说一下,这不是PHP问题)。
答案 5 :(得分:0)
如果你的问题是关于交易的,那么答案是肯定的,但它不是语言本身的一个特征。事务安全是数据库层的任务(通常是像MySQL这样的关系数据库)。
但如果我读到你的问题,比如“PHP可扩展吗?”,那么答案也是肯定的。
PHP处理“并发”尽可能完美,因为它完全隐藏了与应用程序相关的任何并发相关细节,这对Web应用程序来说是件好事。它使应用程序具有固有的可扩展性,就像HTTP使“Web”可扩展一样。 HTTP是无状态的,因此PHP在某种意义上是无状态的。这允许容易的水平可伸缩性,例如,通过添加更多硬件而无需更改应用程序代码(尽管这仍需要事先获得一些应用程序支持)。