我有一个脚本,可以下载多个文件(从PHP生成PDF)并将其压缩为一个文件。但是我面临服务器的问题-下载(和生成)约。 100个文件主要杀死了托管服务器-前10个工作正常,但接下来会产生错误500。我想增加文件下载之间的延迟,并确保文件在此后的一段时间内一个接一个地下载-目前,我有一种异步方法文件下载。文件甚至可以下载几分钟-迅速生成zip并不重要。
正在使用的代码:
jQuery(function ($) {
var Promise = window.Promise;
if (!Promise) {
Promise = JSZip.external.Promise;
}
function urlToPromise(url) {
return new Promise(function(resolve, reject) {
JSZipUtils.getBinaryContent(url, function (err, data) {
if(err) {
reject(err);
} else {
resolve(data);
}
});
});
}
var $form = $("#download_form").on("submit", function () {
var zip = new JSZip();
urls = ["url1", "url2", "url3"];
uLen = urls.length;
for (i = 0; i < uLen; i++) {
var url = urls[i];
var filename = "";
if (url.match(/.*print=pdf/g)){
filename = url.replace(/.*\/[0-9]*\//g, "");
filename = filename.replace(/\/\?print=pdf/g, ".pdf")
} else {
filename = url.replace(/.*\//g, "");
}
zip.file(filename, urlToPromise(url), {binary:true});
};
zip.generateAsync({type:"blob"}).then(function callback(blob) {
saveAs(blob, "doc.zip");
}, function (e) {
showError(e);
});
return false;
});
});