最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP導出數(shù)據(jù)超時的優(yōu)化建議

 更新時間:2021年07月09日 08:40:44   作者:冷月&  
當數(shù)據(jù)訪問次數(shù)過多時,建議使用redis緩存一些固定數(shù)據(jù),減少mysql查詢次數(shù)。今天小編給大家分享PHP導出數(shù)據(jù)超時的優(yōu)化建議,感興趣的朋友一起看看吧

一般情況下,導出超時可能都是以下三種情況:
  一、sql語句復雜,查詢時間過長;
  二、處理查詢后數(shù)據(jù)邏輯冗余;
  三、數(shù)據(jù)量過大導致響應超時。
接下來分別給出這三種情況的優(yōu)化建議。

一、sql語句復雜,查詢時間過長

  1、查看索引是否設置妥當,即所用的查詢條件是否有添加索引,當然索引不是越多越好,只需給常用的查詢條件加上即可,一般采用B+樹的索引方式(具體原因可自行百度,不再贅述)
  2、在查詢語句中盡量避免IN、NOT IN、IS NULL、OR、!=、<>、LIKE、OR、NOT EXISTS這些查詢條件的出現(xiàn),會導致索引失效。
- IN查詢時,可以考慮用BETWEEN來代替
- LIKE查詢時,僅當"%"在前時會索引失效,"%"在后是不會失效的
- 查詢條件里還要避免數(shù)字的出現(xiàn),使用字符串,數(shù)字也會導致索引失效,例如,查詢:"pid"=1,可以優(yōu)化為"pid"="1"
- 要盡量避免在循環(huán)中使用查詢語句,這種情況一般可以用join或者with來解決(當涉及到跨庫時,請謹慎使用這種方式?。?br /> - 查詢時,可以指定需要查詢的字段,排除掉不需要的字段避免資源浪費
- 當數(shù)據(jù)量多大時,可以使用分頁和緩存來優(yōu)化(具體方法請參考數(shù)據(jù)量過大導致響應超時部分)
溫馨提示:在執(zhí)行查詢語句后,可以通過show profiles來查詢語句的資源消耗情況來幫助你更好的優(yōu)化sql語句;關于查詢語句是否使用了索引,可以在查詢語句前加explain來查看索引使用情況,例如:
explain select * from user where id= '1';

二、處理查詢后數(shù)據(jù)邏輯冗余

- 在做數(shù)組循環(huán)時,盡量使用continue、break來減少沒必要的循環(huán);

- 盡量減少if嵌套層數(shù),在需要用到多個if-else時,使用switch可以提高效率,特別是在數(shù)據(jù)量大時
- 當進行數(shù)組賦值時,
  一次賦一個值,使用$arr[]=1,會比array_push($arr,"1"),更快,
  但是當需要多次賦值時,
    array_push($arr,"1","2","3",...),會比
    $arr[]="1";
    $arr[]="2"
    $arr[]="3"
    ...
  更快
  
- 遍歷數(shù)組進行賦值時,盡量使用引用的方式,減少內存開銷,例如:
  
    foreach($arr as &$item){
      $item = 1;
      ...
    }

三、數(shù)據(jù)量過大導致響應超時

當數(shù)量兩過大,又不想用異步的方式導出excel文件時,可以嘗試使用csv來作為到處格式,且查詢導出數(shù)據(jù)時可以使用分頁的方式查詢,導出時利用ob_flush進行緩存。例如:

$page = 1;    // 頁面
$pageSize = 1000;    //每頁條數(shù)
while(
  $list = Db::name("user")->page($page)->limit($pageSize)->select()
)
{
  foreach($list as &$item){
    // TODO 進行相應的邏輯處理
  }
  $page++;
}

當數(shù)據(jù)訪問次數(shù)過多時,建議使用redis緩存一些固定數(shù)據(jù),減少mysql查詢次數(shù)。
當然,最好的方式還是使用異步的方式導出,建議使用python或者go語言搭建微服務來進行導出。

到此這篇關于PHP導出數(shù)據(jù)超時的優(yōu)化的文章就介紹到這了,更多相關PHP導出數(shù)據(jù)超時內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • php網(wǎng)上商城購物車設計代碼分享

    php網(wǎng)上商城購物車設計代碼分享

    我們要做的是一個可以包含促銷活動的購物車,所以比較其他簡單的購物車,會稍微復雜一點。(用的是PHP的zend framework框架)
    2012-02-02
  • Laravel?Eloquent的九個實用特性詳解

    Laravel?Eloquent的九個實用特性詳解

    這篇文章主要為大家介紹了LaravelEloquent的九個實用特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • PHP分頁類集錦

    PHP分頁類集錦

    本文匯集了幾個比較好用的php分頁類,都是經(jīng)過廣大網(wǎng)友考驗的代碼了,小伙伴們可以直接拿來使用
    2014-11-11
  • PHP實現(xiàn)新型冠狀病毒疫情實時圖的實例

    PHP實現(xiàn)新型冠狀病毒疫情實時圖的實例

    在本篇文章小編給大家分享一篇關于PHP新型冠狀病毒肺炎疫情實時圖源碼內容,有興趣的朋友們可以本地測試下。
    2020-02-02
  • PHP中如何使用session實現(xiàn)保存用戶登錄信息

    PHP中如何使用session實現(xiàn)保存用戶登錄信息

    這篇文章主要給大家介紹在php中是如何使用session實現(xiàn)保存用戶登錄信息的,涉及到php session 用戶登錄等一些知識點,使用session保存用戶登錄信息要比cookie安全很多。感興趣的朋友一起學習吧
    2015-10-10
  • Thinkphp5+uploadify實現(xiàn)的文件上傳功能示例

    Thinkphp5+uploadify實現(xiàn)的文件上傳功能示例

    這篇文章主要介紹了Thinkphp5+uploadify實現(xiàn)的文件上傳功能,結合實例形式分析了Thinkphp5結合uploadify實現(xiàn)文件上傳的具體步驟、原理與相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • php上傳文件問題匯總

    php上傳文件問題匯總

    這篇文章主要給大家匯總介紹了一些php上傳文件問題,需要的朋友可以參考下
    2015-01-01
  • CI框架入門之MVC簡單示例

    CI框架入門之MVC簡單示例

    這篇文章主要介紹了CI框架入門之MVC簡單示例,分析了CI框架MVC架構的原理并結合實例形式演示了CI框架數(shù)據(jù)查詢與顯示功能的完整實現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • Zend Framework教程之前端控制器Zend_Controller_Front用法詳解

    Zend Framework教程之前端控制器Zend_Controller_Front用法詳解

    這篇文章主要介紹了Zend Framework教程之前端控制器Zend_Controller_Front用法,詳細分析了前端控制器Zend_Controller_Front的功能,使用方法與相關注意事項,需要的朋友可以參考下
    2016-03-03
  • ThinkPHP3.2.3框架郵件發(fā)送功能圖文實例詳解

    ThinkPHP3.2.3框架郵件發(fā)送功能圖文實例詳解

    這篇文章主要介紹了ThinkPHP3.2.3框架郵件發(fā)送功能,結合圖文與實例形式詳細分析了基于thinkPHP框架進行郵件發(fā)送的相關原理、配置及操作技巧,需要的朋友可以參考下
    2019-04-04

最新評論

忻州市| 鄂伦春自治旗| 赤水市| 循化| 定边县| 新巴尔虎右旗| 岢岚县| 奉贤区| 柳林县| 闻喜县| 芜湖市| 扎鲁特旗| 康保县| 武平县| 黄骅市| 嫩江县| 普安县| 平果县| 子长县| 泰顺县| 晋州市| 思南县| 夏邑县| 民乐县| 宁波市| 怀化市| 贵定县| 景宁| 河池市| 察哈| 灵武市| 太和县| 宜黄县| 常州市| 博白县| 呼伦贝尔市| 岳普湖县| 潜山县| 沐川县| 富民县| 调兵山市|