スキップしてメイン コンテンツに移動

投稿

6月, 2020の投稿を表示しています

PHPでZipファイルを作成

PHPでZipファイルを作成するためのコードです。 ZipArchive::openメソッドの第2引数のオプションで新規作成や既存Zipファイルへの追加をコントロールできます。 ZipArchive::openメソッドの戻り値をチェックすることで、openに成功したか失敗したかを確認することができます。 function createZipFile(string $zipFilePath, $targetFiles) { $zip = new \ZipArchive(); try { $zip->open($zipFilePath, \ZipArchive::CREATE|\ZipArchive::OVERWRITE); foreach($targetFiles as $path => $localName) { $zip->addFile($path, $localName); } } finally { $zip->close(); } }

Linuxでテキストファイルから重複行を取り除く方法

下記のコマンドで実現できます。 less {対象のテキストファイル} | sort -s -k 1 | uniq > result.txt コマンドの簡単な解説です。 lessコマンドで、対象のテキストファイルを読み込み sortコマンドで、1行目を指定してソート uniqコマンドで、重複を取り除く 結果をテキストに書き込み

PHPの配列(array)のメモリ使用量の考察

はじめに 最近PHP上に大量のデータをメモリ上に展開していたのですが、配列(array)の形式(連想配列 or 単純な配列)や配列の要素のデータ構造(数字、配列、文字列など)で大きくメモリ使用量に差が出てくることに気づき、簡単なプログラムを組んで調べてみました。 あくまで筆者の環境での結果なので、細かい数値は参考程度に見てください。 測定環境と方法 OS: Windows 10 PHP 7.4.5 (php-7.4.5-nts-Win32-vc15-x64) 配列に要素を追加するプログラムを書いて、PHPのmemory_get_usage(true)関数を使って実メモリ使用量を計測しました。 計測結果 No. 方式 1MB当たり作成できる 要素数 プログラム 補足 1 キーも値も整数の配列 (整数IDを想定) 28571 // 2,000,000 / 70MB $row = []; for($i = 0; $i < 2000000; $i++) { $row[] = $i; } No.2~6でテストしたプログラム中の要素数は200,000。これだけ一桁多い! 2 キーが文字列、値が整数の連想配列 8333 // 200,000 / 24MB $row = []; for($i = 0; $i < 200000; $i++) { $row[$i.'_key_string'] = $i; } キーの文字列が長い方がメモリ使用量多くなる。 3 キーが整数、値が連想配列の配列 DBから取得してきたデータを想定 2325 // 200,000 / 86MB $row = []; for($i = 0; $i < 200000; $i++) { row[] = ['id' => $i]; } 4 キーが整数、値が連想配列の配列(配列に複数の値を保持) DBから取得してきたデータを想定 2127 // 200,000 /