我有一个php文件,在给定一些约束的情况下在后台访问mysql数据库,然后返回一些数据。
唯一的问题是,如果我同时收到大量请求,那么最后的请求必须等待一段时间才能得到他们的回复。
有没有更好的方法来处理这种事情,以便请求快速,没有人必须等待?
**添加了信息
目前我的脚本接受一些POST参数,然后转到数据库并验证一些信息,然后回显一个json编码的响应字符串。
如果我通过JS中的XMLHTTPRequests发出1000个请求,那么1000的请求几乎在一分钟之后就会回来。
据我所知,php一次处理一个请求,但是当成千上万的用户同时更新信息时,Facebook等主要网站如何处理呢?
答案 0 :(得分:1)
大家伙怎么做?
(我曾经为一个最大的家伙工作。)
答案 1 :(得分:0)
我认为问题不是PHP,甚至不是MySql,但我认为你的MySql数据库设置不正确。
所以我假设你在PHP中有一个类似的查询。
“select * from mytable where email =?”你将其作为JSON返回。
现在,如果您的MySql数据库中有100,000行,如果您没有为where子句中的字段或字段编制索引,这将会很慢。
请参阅此答案,了解如何索引MySql表。 How do I add indices to MySQL tables?
简短回答您需要索引where子句中的任何字段。例如,如果你只有where子句中的电子邮件,那么你需要索引电子邮件(只需要一次告诉MySql总是创建一个索引)
ALTER TABLE `table` ADD INDEX `email` (`email`)
这将导致MySql快速超速,1000个请求不会花费60秒。 实际上,从这个页面,您应该能够在1秒内完成92,355请求进入数据库并返回。
https://www.techempower.com/benchmarks/(寻找php-raw)。
不是PHP的问题,OP只是使用浏览器中的XMLhttp进行测试,因为浏览器只能在同一个域内同时发出2-6个请求,测试过程只是简单的。