针对android客户端请求优化apache和mysql
如果我期望来自不同IP的大量连接同时获得相同数量的数据,那么我想知道应该设置哪些apache/httpd参数。例如:我有10000台移动设备,它们试图同时从服务器获取数据。数据集大约有10万个,由一个php脚本生成。每次调用都会对数据库进行查询。如何配置apache(和mysql)以在请求期间保持活动状态针对android客户端请求优化apache和mysql,android,mysql,apache,http,Android,Mysql,Apache,Http,如果我期望来自不同IP的大量连接同时获得相同数量的数据,那么我想知道应该设置哪些apache/httpd参数。例如:我有10000台移动设备,它们试图同时从服务器获取数据。数据集大约有10万个,由一个php脚本生成。每次调用都会对数据库进行查询。如何配置apache(和mysql)以在请求期间保持活动状态 <?php $con = mysql_connect( 'localhost', 'root', 'pass') or die('Could not connect' ); mysql_
<?php
$con = mysql_connect( 'localhost', 'root', 'pass') or die('Could not connect' );
mysql_select_db('mydb', $con) or die('Could not select database.');
$result = mysql_query("SELECT * FROM results");
mysql_close($con);
$items = array();
while($row = mysql_fetch_array($result)){
$items[] = array(
's' => $row['sport'],
....
);
echo json_encode($items);
}
首先使用mysqli API,而不是mysql()
然后必须使用bind-param技术()因为生成的查询具有更好的性能,因为mysql不必重建查询的执行计划,只需重新执行它
服务器端注意不要减慢MyISAM驱动程序,而是InnoDB。如果可以管理表结构,请采用众所周知的规范化做法:
同时也要以异步方式在您的while中执行代码,这样您就可以“并行化”代码的执行。谢谢您的回答。我会关注所有这些话题。我需要在apache端做些什么来允许许多并行连接吗?关于“绑定参数技术”。我的查询是“从结果中选择*,其中version={$\u GET[“version”]}”。因此,用户总是通过查询传递一个版本。。这里也可以使用bind param吗?是的,您可以,如果查询是最简单的服务器端,则更好。连接池由php+apache自动管理。如果你想进行一些定制,请查看,因为查询很简单,只依赖于“版本”。将数据预存到文件中有意义吗?例如:v1.txt、v2.txt等。。。其中“v1”实际上是数据的“版本”。然后,由用户调用的脚本(getdata.php)读取文件并将输出返回给用户。。那么就根本没有对mysql的请求了。。。它会提高速度和可用性吗?