本文整理汇总了PHP中Zip::decompress方法的典型用法代码示例。如果您正苦于以下问题:PHP Zip::decompress方法的具体用法?PHP Zip::decompress怎么用?PHP Zip::decompress使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zip
的用法示例。
在下文中一共展示了Zip::decompress方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: init
/**
* 在线升级
*/
public function init()
{
// 开始升级
$do = I('get.do');
$cover = I('cover', 0);
if (empty($do)) {
$this->message(L('upgradeing'), url('init', array('do' => 1, 'cover' => $cover)));
}
// 获取补丁列表
$pathlist = $this->pathlist();
if (empty($pathlist)) {
$this->message(L('upgrade_success'), url('checkfile'));
}
// 创建缓存文件夹
if (!file_exists(CACHE_PATH . 'upgrade')) {
@mkdir(CACHE_PATH . 'upgrade');
}
foreach ($pathlist as $k => $v) {
$release = str_replace('patch_R', '', basename($v, ".zip"));
// 远程压缩包地址
$upgradezip_url = $this->upgrade_path_base . $v;
// 保存到本地地址
$upgradezip_path = CACHE_PATH . 'upgrade' . DIRECTORY_SEPARATOR . $v;
// 解压路径
$upgradezip_source_path = CACHE_PATH . 'upgrade' . DIRECTORY_SEPARATOR . basename($v, ".zip");
// 下载压缩包
@file_put_contents($upgradezip_path, Http::doGet($upgradezip_url));
// 解压缩
$zip = new Zip();
if ($zip->decompress($upgradezip_path, $upgradezip_source_path) == 0) {
die("Error : unpack the failure.");
}
// 拷贝utf8/upload文件夹到根目录
$copy_from = $upgradezip_source_path . DIRECTORY_SEPARATOR . $this->patch_charset . DIRECTORY_SEPARATOR . 'upload' . DIRECTORY_SEPARATOR;
$copy_to = ROOT_PATH;
$this->copyfailnum = 0;
$this->copydir($copy_from, $copy_to, $cover);
// 检查文件操作权限,是否复制成功
if ($this->copyfailnum > 0) {
// 如果失败,终止操作
$this->message(L('please_check_filepri'), url('index'));
}
// 执行sql
// sql目录地址
$sql_path = CACHE_PATH . 'upgrade' . DIRECTORY_SEPARATOR . basename($v, ".zip") . DIRECTORY_SEPARATOR . $this->patch_charset . DIRECTORY_SEPARATOR . 'upgrade' . DIRECTORY_SEPARATOR;
$file_list = glob($sql_path . '*');
if (!empty($file_list)) {
foreach ($file_list as $fk => $fv) {
$file_path = strtolower($fv);
if (in_array(substr($file_path, -3, 3), array('php', 'sql')) && substr($file_path, -10, 10) != 'config.php') {
if (substr($file_path, -3, 3) == 'sql') {
// 更新sql文件
$sqlData = Install::mysql($file_path, 'ecs_', C('DB_PREFIX'));
// 执行sql文件
$model = new EcModel();
if (is_array($sqlData)) {
foreach ($sqlData as $sql) {
@$model->db->query($sql);
}
}
} elseif (strtolower(substr($file_list[$fk], -3, 3)) == 'php' && file_exists($file_path)) {
include $file_path;
}
}
}
}
// 读取版本号写入version.php文件
// 配置文件地址
$configpath = CACHE_PATH . 'upgrade' . DIRECTORY_SEPARATOR . basename($v, ".zip") . DIRECTORY_SEPARATOR . $this->patch_charset . DIRECTORY_SEPARATOR . 'upgrade' . DIRECTORY_SEPARATOR . 'version.php';
if (file_exists($configpath)) {
$config = (include $configpath);
// 版本文件地址
$content = "<?php\ndefine('APPNAME', '" . $config['APPNAME'] . "');\ndefine('VERSION', '" . $config['VERSION'] . "');\ndefine('RELEASE', '" . $release . "');\ndefine('ECTOUCH_AUTH_KEY', '" . ECTOUCH_AUTH_KEY . "');";
@file_put_contents(ROOT_PATH . 'data/version.php', $content);
}
// 删除文件
@unlink($upgradezip_path);
// 删除文件夹
del_dir($upgradezip_source_path);
// 提示语
$tmp_k = $k + 1;
if (!empty($pathlist[$tmp_k])) {
$next_update = '<br />' . L('upgradeing') . basename($pathlist[$tmp_k], ".zip");
} else {
$next_update;
}
// 是否升级成功
$this->message(basename($v, ".zip") . L('upgrade_success') . $next_update, url('init', array('do' => 1, 'cover' => $cover)));
}
}