php追加记录到文件行首的办法
生活随笔
收集整理的這篇文章主要介紹了
php追加记录到文件行首的办法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
同事處理數(shù)據(jù)時(shí)遇到一個(gè)問題:客戶要求的文件格式是第一行是統(tǒng)計(jì)數(shù)據(jù),后面換行后緊跟的是明細(xì)記錄。
要保證明細(xì)記錄的數(shù)量與統(tǒng)計(jì)數(shù)據(jù)一致就必須在寫完明細(xì)之后再寫入統(tǒng)計(jì)數(shù)據(jù),而且數(shù)據(jù)的量在百萬級,所以不太可能先讀到內(nèi)存再匯總后一起寫入。
最后找到的解決辦法如下:
$offset = 50; $fp = fopen("fseek.txt", "wb");// 創(chuàng)建文件 flock($fp, LOCK_EX);// 鎖定 fwrite($fp, "\n");// 寫入一空行 fseek($fp, $offset);// 移動(dòng)文件指針至偏移量處,相當(dāng)于空出了50個(gè)字節(jié)的內(nèi)存空間 // 寫數(shù)據(jù),匯總 $write_count = 0; for ($i = 0; $i < 10; $i++) {fwrite($fp, "abc\n");$write_count++; } fseek($fp, 0);// 文件指針再移到文件頭 // 寫入?yún)R總記錄,并用空格填充余下的內(nèi)存空間 fwrite($fp, str_pad("total count:". $write_count, $offset - 1, " ", STR_PAD_RIGHT)."\n"); flock($fp, LOCK_UN);// 解鎖 fclose($fp);// 關(guān)閉文件轉(zhuǎn)載于:https://blog.51cto.com/ustb80/1285471
總結(jié)
以上是生活随笔為你收集整理的php追加记录到文件行首的办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 采用web技术开发PC应用
- 下一篇: PHP-Codeigniter:实习笔记