php之压缩文件

36 篇文章 0 订阅

使用场景:大文件下载,源码压缩,动态化压缩(给到每个客户的代码不一样)等。

环境:linux和windows基本一致的,需要安装php压缩拓展zip/zlib之类(根据自己使用的压缩类型选择);可以使用php -m查看是否安装。

代码:composer相应的拓展包进行使用。如:D:\phpstudy_pro\WWW\o2o\vendor\comodojo\zip之类。

public function actionDownload()
    {
        $entryUri = str_replace('http://', 'https://', \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/index.php?store_id=' . $this->store->id . '&r=api/'); // API 入口
        $alipayDir = \Yii::$app->basePath . '/web/antapp'; // 下载的包所在路径
        $siteinfoPath = $alipayDir . '/siteinfo.js'; // siteinfo.js 路径
        $siteinfo = <<<EOF
var siteinfo = {
    'acid': -1,
    'version': '1.0.0',
    'siteroot': 'https://XXX.com/app/index.php',
    'apiroot': '{$entryUri}',
};
module.exports = siteinfo;
EOF;
        // siteinfo.js内容 (动态写入XXX可对应不同域名)


        $lockFile = sys_get_temp_dir() . '/opening-alipay-publish-lock'; // 锁文件,保证独占(在对应服务器上生成的)
        $zipFile = sys_get_temp_dir() . '/opening-alipay-publish-archive'; // 打包文件(在对应服务器上生成的)

        $lock = fopen($lockFile, 'w+');
        flock($lock, LOCK_EX);

        // --- 打包逻辑开始 ---
        file_put_contents($siteinfoPath, $siteinfo);
        if (is_file($zipFile)) {
            unlink($zipFile);
        }
        $zip = Zip::create($zipFile);
        $zip->add($alipayDir, true);
        $zip->close();
        // --- 打包逻辑结束 ---

        flock($lock, LOCK_UN);
        fclose($lock);
        return \Yii::$app->response->sendFile($zipFile, 'alipay-app.zip');
    }

效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值