婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議

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

熱門標(biāo)簽:天津電銷外呼系統(tǒng)違法嗎 合肥ai電銷機(jī)器人費(fèi)用 銀行信貸電話機(jī)器人 400電話個(gè)人能不能辦理 手機(jī)外呼系統(tǒng)什么原理 上海400客服電話怎么申請(qǐng) 凱立德地鐵站地圖標(biāo)注 溫州外呼系統(tǒng)招商 滄州電銷外呼系統(tǒng)價(jià)格

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

一、sql語句復(fù)雜,查詢時(shí)間過長

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

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

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

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

三、數(shù)據(jù)量過大導(dǎo)致響應(yīng)超時(shí)

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

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

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

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

您可能感興趣的文章:
  • 使用PHPExcel實(shí)現(xiàn)數(shù)據(jù)批量導(dǎo)出為excel表格的方法(必看)
  • 利用PHPExcel讀取Excel的數(shù)據(jù)和導(dǎo)出數(shù)據(jù)到Excel
  • 完美解決php 導(dǎo)出excle的.csv格式的數(shù)據(jù)時(shí)亂碼問題
  • 詳解thinkphp實(shí)現(xiàn)excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(附完整案例)
  • PHP使用PHPexcel導(dǎo)入導(dǎo)出數(shù)據(jù)的方法
  • jquery+php實(shí)現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法

標(biāo)簽:七臺(tái)河 洛陽 怒江 白城 赤峰 溫州 酒泉 金華

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議》,本文關(guān)鍵詞  PHP,導(dǎo)出,數(shù)據(jù),超時(shí),的,優(yōu)化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 博爱县| 阿克陶县| 金沙县| 花莲市| 柯坪县| 岚皋县| 襄樊市| 洞头县| 天峻县| 伊春市| 遵义县| 衡山县| 房产| 大新县| 连山| 鲁山县| 婺源县| 兰州市| 灵宝市| 云南省| 蒙自县| 长治市| 岳普湖县| 扎兰屯市| 辛集市| 泾川县| 措美县| 田林县| 宁德市| 巴彦县| 永吉县| 巴东县| 建德市| 房产| 吉林市| 政和县| 合山市| 色达县| 马尔康县| 竹北市| 余庆县|