重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
tp开启事务: M()-startTrans(); M()-commit();M()-rollback();#thinkphp3.2
创新互联主营花都网站建设的网络公司,主营网站建设方案,手机APP定制开发,花都h5重庆小程序开发搭建,花都网站营销推广欢迎花都等地区企业咨询
看你
服务器配置
等。
我以前做项目,发现大约500次时就要几秒的处理时间。
所以我一般是高于500次时就会分次执行,比一次性执行反而快很多。
这是由于数据库连接数过多导致的,说明之前建立的连接你没有释放。
看到你的需求是实时获取数据库里面的内容,可以考虑使用内存数据库,这样返回的效率高,也会避免过多连接的错误。
可以使用redis和memcache来解决这个问题。代码如下,记得首先要安装redis,并且要安装php-redis扩展。
?php
$redis = new Redis();
$redis-connect('127.0.0.1', 6379);//serverip port
$redis-auth('mypassword');//my redis password
$redis -set( "test" , "Hello World");
echo $redis -get( "test");
我只针对你这个做优化吧。。
第一个不要用select * 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select * 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache-get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql-_query($aaa);
while(!!$_rows=$mysql-_fetch_array_list($bb)){
//do something
$res ....
}
//结果存入memecahed中
$memcache-set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。