PHPで1Gサイズのファイルを読み込む実装方法の紹介

黄舟
リリース: 2023-03-16 09:10:01
オリジナル
1126 人が閲覧しました

[バックグラウンド]: ファイル関数はすべてのコンテンツを一度にメモリに読み取り、PHP は、不適切に作成されたプログラムがメモリを大量に消費し、システム メモリ不足を引き起こしてサーバーがクラッシュするのを防ぐために使用されるため、良いアイデアを考える必要があります。

[アイデア]:


01 思路1:利用php执行linux的命令,将一个文件内容(a.log)复制到另一个文件中(b.log)
cat a.log >>b.log02 思路2:用php执行linux的head命令,获取内容,一行行写入另一个文件(b.log)中。
cat a.log|wc -l
sed -n '1 p' a.logfileputcontents('b.log’, $content, FILE_APPEND);
ログイン後にコピー

[コード実装]:

//02.读取1G的文件内容
 public function testGetLarge()
 {/*{{{*/
     #01. 方法1 直接cat后重定向
     #if('useCat' == 'useCat')
     if(0 && 'useCat' == 'useCat')
     {
         `cat a.log>>b.log`;
     }

     #02. 使用flie_put_contents ,一行一行读取并追加写入
     if('useFilePutContents' == 'useFilePutContents')
     {/*{{{*/
         $lineNum = `cat a.log|wc -l`;
         for($i=1; $i<= $lineNum; $i++)
         {
             $content = `sed -n &#39;$i p&#39; a.log`;
             //文件追加
             file_put_contents(&#39;b.log&#39;, $content, FILE_APPEND);
         }

     }/*}}}*/
ログイン後にコピー

以上がPHPで1Gサイズのファイルを読み込む実装方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート