使用for循環(huán)

在碭山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都營(yíng)銷網(wǎng)站建設(shè),外貿(mào)營(yíng)銷網(wǎng)站建設(shè),碭山網(wǎng)站建設(shè)費(fèi)用合理。
定義變量$i,配合select * from table where ………… limit $i,100
這樣就可以了
我之前就做過(guò),但因?yàn)閾Q了工作,代碼在之前的公司,否則就可以讓你參考下了
另外,我覺得100太少了,最起碼得改成1000才行
廢話不多說(shuō),直接上代碼吧
. 代碼如下:
public function export_data($data = array())
{
# code...
include_once(APP_PATH.'Tools/PHPExcel/Classes/PHPExcel/Writer/IWriter.php') ;
include_once(APP_PATH.'Tools/PHPExcel/Classes/PHPExcel/Writer/Excel5.php') ;
include_once(APP_PATH.'Tools/PHPExcel/Classes/PHPExcel.php') ;
include_once(APP_PATH.'Tools/PHPExcel/Classes/PHPExcel/IOFactory.php') ;
$obj_phpexcel = new PHPExcel();
$obj_phpexcel-getActiveSheet()-setCellValue('a1','Key');
$obj_phpexcel-getActiveSheet()-setCellValue('b1','Value');
if($data){
$i =2;
foreach ($data as $key = $value) {
# code...
$obj_phpexcel-getActiveSheet()-setCellValue('a'.$i,$value);
$i++;
}
}
$obj_Writer = PHPExcel_IOFactory::createWriter($obj_phpexcel,'Excel5');
$filename = "outexcel.xls";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$obj_Writer-save('php://output');
}
你可以查1W條,然后按每個(gè)數(shù)據(jù)100條來(lái)分。
$data?=?select?*?from?table?limit?10000
$chunk?=?array_chunk($data,?100);
print_r($chunk);
也可以每次查詢 100 條
$start?=?0;
while($data?=?select?*?from?table?limit?$start,?100)
{
print_r($chunk);
$start?+=?100;
}
php處理數(shù)據(jù)時(shí)會(huì)有一個(gè)等待時(shí)間,就是所說(shuō)的超時(shí)時(shí)間,而且如果使用mysql的話,它也有一個(gè)超時(shí)時(shí)間,運(yùn)行一串代碼時(shí)間如果超過(guò)配置文件的時(shí)間,會(huì)被中斷不運(yùn)行。第一種你可以修改php配置文件timeout的運(yùn)行時(shí)間,第二你可以分批處理大量數(shù)據(jù),注意是分批處理,就OK了。
異步的方式可以實(shí)現(xiàn)~~
如果一定要 php 程序?qū)崿F(xiàn)的話,考慮使用 ob_flush + sleep,但是某些瀏覽器可能會(huì)有一些影響,跟你的文檔結(jié)構(gòu)也有關(guān)系,特別是有 table的情況下~
ob_start();
for($i = 0; $i 10; $i++){
echo $i, "br /";
ob_flush();
sleep(10);
}
百萬(wàn)級(jí)的數(shù)據(jù)庫(kù)表,好像也不用這么麻煩吧?
直接寫一個(gè)php,遞歸執(zhí)行就差不多了,但是php.ini中,將memory_limit設(shè)置大一些,再將mysql.connect_timeout值加大些,max_execution_time設(shè)置的值大一些。
如果不想設(shè)置這些,在程序中使用 ini_set() 函數(shù)也是可以的,一開始先遞歸小一些做十幾條,測(cè)試通過(guò)了再遞歸所有數(shù)據(jù),然后等就行了。
在等待的過(guò)程中,你可以用phpmyadmin等工具查看實(shí)時(shí)進(jìn)度,如果發(fā)現(xiàn)問(wèn)題,重啟web服務(wù)器進(jìn)程,就中止運(yùn)行了,然后再試。
分享題目:php怎么數(shù)據(jù)集分批處理,php批量處理數(shù)據(jù)
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article49/dsgoieh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站營(yíng)銷、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、企業(yè)網(wǎng)站制作、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)