PHP即时刷新xml到zipfile并推送下载
发布时间:2020-12-13 16:10:55 所属栏目:PHP教程 来源:网络整理
导读:我根据来自我的数据库(xmltv格式)的信息创建了一个xml文件.这些xml文件可能非常大 – 25-70mb是正常的.现在我像这样在飞行中创建xml文件: $xmlWriter = new XMLWriter();$xmlWriter-openURI('php://output'); 并通过循环刷新以防止内存溢出.我还设置标题以
我根据来自我的数据库(xmltv格式)的信息创建了一个xml文件.这些xml文件可能非常大 – 25-70mb是正常的.现在我像这样在飞行中创建xml文件:
$xmlWriter = new XMLWriter(); $xmlWriter->openURI('php://output'); 并通过循环刷新以防止内存溢出.我还设置标题以将内容推送到下载: header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $config->filename . '.xml"'); 我希望能够压缩/ gzip xml因为大小.这是可能的吗?我之前使用过PHPZip,它适用于文件,但我不知道我是否可以直接将xml输出写入zip? 解决方法
如果我理解正确,目标是动态创建gzip压缩数据,而无需在服务器上创建文件.这可以使用
deflate_init 和
deflate_add ,但需要PHP 7.
$gzip = deflate_init(ZLIB_ENCODING_GZIP,array('level' => 9)); $data = deflate_add($gzip,"my",ZLIB_NO_FLUSH); $data .= deflate_add($gzip,"data",ZLIB_FINISH); 使用deflate_add,我们可以多次添加更多数据(模式应该是最后一个块的ZLIB_FINISH). 我们可以使用 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="file.gz"'); $xmlWriter = new XMLWriter(); $xmlWriter->openMemory(); $xmlWriter->startDocument('1.0','UTF-8'); $gzip = deflate_init(ZLIB_ENCODING_GZIP,array('level' => 9)); for ($i = 0; $i < 10; $i++) { $xmlWriter->writeElement("element",$i); $data = $xmlWriter->outputMemory(); echo deflate_add($gzip,$data,ZLIB_NO_FLUSH); } echo deflate_add($gzip,"",ZLIB_FINISH); 创建xml元素,逐个压缩并输出它们,而不使用太多内存或任何文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |