【问题标题】:PHP fwrite() for writing a large string to filePHP fwrite() 用于将大字符串写入文件
【发布时间】:2016-02-03 17:11:38
【问题描述】:

我必须将一个大字符串 10MB 写入文件,我正在使用这一行来实现:

fwrite($file, $content);

问题是:不是整个字符串都写入文件,并且限制在特定的限制范围内。

fwrite 总是返回 7933594

【问题讨论】:

    标签: php fwrite large-files


    【解决方案1】:

    是的,fwrite 函数有长度限制,对于大文件,您可以将文件拆分成更小的部分,如下所示:

        $file   = fopen("file.json", "w");
    
        $pieces = str_split($content, 1024 * 4);
        foreach ($pieces as $piece) {
            fwrite($file, $piece, strlen($piece));
        }
    
        fclose($file);
    

    【讨论】:

      【解决方案2】:

      @Ayman Alkom 解决方案的另一种方式。

      function fwrite_stream($fp, $string) {
          for ($written = 0; $written < strlen($string); $written += $fwrite) {
              $fwrite = fwrite($fp, substr($string, $written));
              if ($fwrite === false) {
                  return $written;
              }
          }
          return $written;
      }
      

      这应该会带来更好的性能。

      但是如果你使用这段代码来复制一个大文件,

      Linux 命令

      "cat file1.txt file2.txt > file.txt" 
      

      窗口命令

      "copy file1.txt+file1.txt file.txt"
      

      是解决办法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-17
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 2023-01-10
        • 1970-01-01
        相关资源
        最近更新 更多