首页 > 解决方案 > 不完整的php云传输和复制

问题描述

我想在两个 wordpress 主机之间传输文件,我使用以下代码:

<?php
copy("https://a.com/b.zip", "b.zip");
?>

该文件大约 500mb ,但每次它都会不完整,只上传文件的几个百分比,从 10 到 200 mb。我使用 namecheap wordpress 托管。

而且我从本地计算机上传这些文件没有任何问题,我尝试了 multcloud 但它也没有成功。我应该怎么办?

标签: phpwordpress

解决方案


对我来说似乎是时间和速度限制。

所以首先要添加的是避免在客户端超时时中止脚本ignore_user_abort(true);copy如果可能,增加时间限制。

另一个需要考虑的选择是将文件分成更小的块或使用更高级的东西来下载,比如基于 curl 的客户端能够恢复未完成的下载(即参见这个要点

此处复制要点

<?php
set_time_limit(0);
ignore_user_abort(true);
$url    = "http://web.shit/backup.zip";

$ch = curl_init($url);
$to_file    = 'web.zip';
$opt    = array();
if(is_file($to_file))
{
    $sz = filesize($to_file);
    $opt[CURLOPT_RANGE] = $sz . "-";
    
}
$opt[CURLOPT_SSL_VERIFYPEER] = false;
$opt[CURLOPT_FOLLOWLOCATION] = true;
$opt[CURLOPT_FILE]  = fopen($to_file, 'a');
$opt[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36';
curl_setopt_array($ch, $opt);
curl_exec($ch);
$grab_info  = curl_getinfo($ch);
fclose($opt[CURLOPT_FILE]);

print_r($grab_info);

推荐阅读