【发布时间】:2014-03-21 17:19:00
【问题描述】:
我对我的 PHP 应用程序有一个特殊要求。
基本上,用户可以请求将其数据备份为TAR 文件。此存档包含一个 JSON 文件,其中包含数据库信息(配置文件、各种数据等)和一个目录,其中包含用户自注册以来上传的所有文件。
到目前为止,我已经编写了以下代码:
$phar = new PharData($output_filename);
$table_dump = self::dump_tables($customers);
$manifest = array();
$manifest['generation_time'] = time();
$manifest['manifest_version'] = self::DUMP_VERSION;
$phar->addFromString(self::MANIFEST_FILE, json_encode($manifest) );
$phar->addFromString(self::DATA_FILE, json_encode($table_dump) );
sql::select(file::sql_table, sql::true, file::sql_key);
$files_list = sql::fetch_all();
if ($files_list) foreach($files_list as $file_guid) {
$file_path = file::forge_file_path($file_guid);
if(is_file($file_path))
$phar->addFile($file_path, basename($file_path));
}
return $output_filename;
它成功返回了一个有效路径,其中包含我可以下载的有效TAR 文件。今天,通过PHP Header 自动开始下载,但打包TAR 需要很长时间。
我想知道的是:是否可以在创建文件时开始下载文件?(因为TAR 文件由折叠文件组成。)
感谢您的帮助。
【问题讨论】:
-
只是猜测:您是否尝试使用
php://output作为文件名? -
你好,是的,它根本不起作用。
标签: php download filestream tar phar