file_put_contents不会立即创建文件

时间:2016-05-02 06:47:35

标签: php

我有一个脚本可以提取100万条记录,并将它们写入光盘上的多个文件,每个文件中有4000个块。根据我的观察,似乎文件不会在光盘上创建,直到脚本即将完成的过程结束。这是为什么?有人可以解释这个过程吗?在我的情况下,它是不幸的,因为我想处理任何内存,将其保存到光盘并继续到另一个文件。这样我希望避免任何内存问题。这是脚本:

public function test()
{

    $this->load->model('Marketing_data_model');
    $records = $this->Marketing_data_model->get_messages();
    $n = 0;
    $j = 0;
    foreach ($records as $record)
    {

        $msg = '{"index" : {"_index" : "mymessages" , "_type" : "data" , "_id" : "' . $record['message_id'] . '"}} \n' . json_encode($record) . '\n';

        file_put_contents($filename, $msg, FILE_APPEND);

        if ($j >= 4000)
        {
            $filename = 'dump/dump-' .$n. '.txt';   

            $n++;
            $j = 0;
        }
        $j++;

    }

}

编辑:

不幸的是同样的问题:

public function test()
    {
        $this->output->enable_profiler(TRUE);
        $this->load->model('Marketing_data_model');
        $records = $this->Marketing_data_model->get_messages();
        $n = 0;
        $j = 0;
        $msg = '';
        foreach ($records as $record)
        {

            $msg .= '{"index" : {"_index" : "mymessages" , "_type" : "data" , "_id" : "' . $record['message_id'] . '"}} \n' . json_encode($record) . '\n';

            if ($j >= 100)
            {   
                $fp = fopen('dump/dump-' .$n. '.txt', 'w');
                fwrite($fp, $msg);
                fclose($fp);
                $n++;
                $j = 0;
                $msg = '';
            }
            else
            {
                $j++;
            }    


        }

    }

0 个答案:

没有答案