Maison > développement back-end > tutoriel php > 求助:php和mysql跨服务器如何提高效率?

求助:php和mysql跨服务器如何提高效率?

WBOY
Libérer: 2016-06-23 14:00:17
original
768 Les gens l'ont consulté

本人开发的一个APP,服务器端使用LAMP,php和mysql在一台服务器上的时候,app的响应速度还行。

但考虑到以后可能需要将php和mysql分别布置到不同服务器上,按这种方式我测试了一下,发现app的响应很慢,每次响应要10秒左右。

分析了自己的php实现代码,发现一次app的请求中,php和mysql有上百次的交互,每一次虽然需要的时间不多,但上百次加起来就很多了。其实数据库本身查询需要的时间不多,估计都花在php和msysql的跨服务器网络时延上。

跨服务器的情况该如何提高效率? 我想到的是两种办法: 1. 提高php和mysql两台服务器的网络传输性能(我现在用的是家里的无线局域网,如果是有线局域网或更好的千兆局域网的话时延就很小了?)   2.  php不用自己实现业务逻辑,将请求发给mysql,然后mysql用存储过程来实现,这样php和mysql间只需要一次交互就行了,应该可以解决网络传输时延的问题。

开发php没有多少经验,求各位帮助,看我想的办法时候可行,或还有其它的解决方案。

谢谢!


回复讨论(解决方案)

1、采用长连接连接数据库
2、一次性读取查询结果到本地 (mysqli_result::store_result、pdo::fetchall)

谢谢版主回复!

用这两种办法可以提高一些性能。

但有些地方不好处理,比如A,B,C是三个查询,需要先做A,根据结果筛选后,才能做B,同样做了B才能做C,有先后顺序的要求,没有办法一次获取查询结果。

其次,有些查询不方便一次行查询结果到本地,除非对业务逻辑做很多修改。



下午将两台机器放到了有线局域网上测试,速度大大加快,在无线局域网情况下,大概ping值是20ms左右,在有线情况下只有不到1ms,所以100多次调用也只有大概70ms左右,这样的话这种延时问题不大。

1次app的请求中,php和mysql有上百次的交互?
一次请求就有上百次交互?。。

本来数据库和php分开就会有一定的网络延迟。
建议:
1. 启用缓存,减少对数据库的访问。
2. 优化数据库结构和索引。

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal