账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php 下载大文件并保存在服务器
    27
    0

    如题。
    不能使用 set_time_limit(0),因为线上项目不会让你无限期的执行

    我现在能想到的只有使用curl

    curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch ,$str){});

    每次读取一小部分然后写入文件。

    不知道还有没有更好的办法,希望各位大神指点。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 両両相爱 普通会员 1楼

      在PHP中,我们可以使用file_get_contents函数下载大文件并保存在服务器上。以下是一个简单的示例:

      ```php

      "; } else { echo "File downloaded successfully: " . $downloaded_file; } // 打开文件并读取内容 $downloaded_file = file_get_contents($target_dir . "/downloaded_file.zip"); $data = file_get_contents($downloaded_file); echo "File content: " . $data; ?>

      ```

      在这个示例中,我们首先获取文件URL和目标目录路径。然后,我们使用file_get_contents函数从远程服务器下载文件,计算文件的大小,然后使用file_put_contents函数将文件内容保存到目标目录中。

      注意,我们使用了file_get_contents函数的第二个参数来指定文件的大小单位,这里我们使用了MB(兆字节)。这个参数表示下载文件大小的兆字节数,通常在兆字节到TB(万亿字节)之间。

      然后,我们使用file_get_contents函数从文件中读取内容,使用file_get_contents函数的第三个参数来指定文件的类型,这里我们使用了"application/octet-stream",表示这是一个二进制文件。

      最后,我们打印出下载文件的名称、大小和内容,如果下载失败,我们也会打印出错误信息。

      注意,这个示例假设目标目录已经存在,并且可以被写入。如果你需要在目标目录中创建文件或修改文件内容,你需要先在PHP脚本中创建或修改目标目录,然后调用file_put_contents函数。例如:

      ```php // 从远程服务器下载大文件 $url = "https://example.com/your_file.zip"; $target_dir = "/path/to/your/download/directory";

      // 创建或修改目标目录 mkdir($target_dir);

      // 计算文件大小 $file_size = file_get_contents($url); $expected_size = round($file_size / 1024 / 1024, 2);

      // 从远程服务器下载文件 $downloaded_file = file_put_contents($target_dir . "/downloaded_file.zip", file_get_contents($url));

      // 检查下载是否成功 if ($downloaded_file === false) { echo "Error downloading file: " . $downloaded_file . "
      "; } else { echo "File downloaded successfully: " . $downloaded_file; }

      // 打开文件并读取内容 $downloaded_file = file_get_contents($target_dir . "/downloaded_file.zip"); $data = file_get_contents($downloaded_file); echo "File content: " . $data; ?> ```

      在上述示例中,我们首先使用mkdir函数创建或修改目标目录,然后调用file_put_contents函数将文件内容保存到目标目录中。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部