我正在编写一个服务,将数据作为响应发送给客户端。
我正在发送文本(PLAIN ASCII)数据,但我想首先压缩数据(uzing任何标准压缩例程),然后使用header()函数将压缩数据发送回服务器。
我对PHP比较新,所以收集了数据后,我知道需要知道如何将HTTP响应中的(压缩)数据发送给用户
这是我到目前为止的伪代码:
<?php
function createResponse($args)
{
if ( ($data = fetch_data($args)) !== NULL)
{
/* Assumption is that $data is a string consisting of comma separated
values (for the columns) and each "row" is separated by a CRLF
so $data looks like this:
18-Oct-2009, 100.2, -10.5, 15.66, 34.2, 99.2, 88.2, 'c', 'it1', 1000342\r\n
19-Oct-2009, -33.72, 47.5, 24.76, 8.2, 89.2, 88.2, 'c', 'it2', 304342\r\n
etc ..
*/
//1. OPTIONAL - need to encrypt $data here (how?)
//2. Need to compress (encrypted?) $data here (how?)
//3. Need to send HTTP Status 200 OK and mime/type (zip/compressed here)
//4. Need to send data
}
else
{
//5. Need to send HTTP error code (say 404) here
}
}
?>
任何有经验的PHP编码员都可以告诉我上面的1-5使用哪些语句?
答案 0 :(得分:0)
您可以使用ob_gzhandler对其进行压缩(因此您的浏览器会自行解压缩)或者您可以使用ZipArchive将数据存档并将其传输给用户,就像真正的.zip文件一样 - 您需要类似的东西:
// Headers for an download:
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="yourarchive.zip"');
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('yourarchive.zip');
注意,必须在输出之前发送标题。
答案 1 :(得分:0)
Google快速启动此库以创建压缩数据流:http://pablotron.org/software/zipstream-php/
希望有所帮助。