6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP: 128MBなど巨大なダミーファイルを生成する方法

Last updated at Posted at 2019-01-21

データ読み込みのテストなどで128MBといった巨大なダミーファイルが必要になることがある。本稿ではPHPで巨大なダミーファイルを作る方法を紹介する。

なお、本稿で紹介するコードの完全版はGitHubで公開している。

指定のファイルサイズでファイルを生成する方法

指定のファイルサイズでファイルを作成するコードは次のようになる。$filesize128を代入すると、128バイトのファイルが作られる。ファイルの中身は128文字のヌルバイト(\000)で埋められる。

$filesize = 128;
$fp = fopen($filename, 'wb');
ftruncate($fp, $filesize);
fclose($fp);

ftruncateはファイルを指定サイズにまるめる関数だが、ファイルサイズよりも大きい値を与えると、ヌルバイトで埋めてくれる。

メガバイトで指定できるようにした実装

バイト数指定だと、テストコードで使うにはコードが読みにくくなるので、メガバイトでファイルサイズを指定できるようにした実装が次のFileBySizeCreatorクラスである。

FileBySizeCreator.php
<?php

declare(strict_types=1);

final class FileBySizeCreator
{
    /**
     * Create a file with given megabyte size.
     */
    public function createFileWithMegabyte(
        string $filename,
        int $megabyte
    ): void {
        $fp = fopen($filename, 'wb');
        ftruncate($fp, $this->megabyteToByte($megabyte));
        fclose($fp);
    }

    private function megabyteToByte(int $megabyte): int
    {
        return $megabyte * 1024 * 1024;
    }
}

使い方はこんなかんじ:

$fileCreator = new FileBySizeCreator();
$fileCreator->createFileWithMegabyte($filename, 128);
6
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?