php利用自带的ZipArchive类压缩文件
php处理压缩和解压缩用自带的扩展类就能实现,虽然没有压缩软件那么高效和丰富,但是在web应用中,还是非常受用的。用php打包一个zip压缩文件非常简单,几行代码就能实现。
实现效果如下:
实现源码:
<?php
$zipObj = new ZipArchive();
$res = $zipObj->open('my.zip', ZipArchive::CREATE); //创建一个zip
if ($res === true)
{ //创建成功
$zipObj->addFile('info.php'); //添加当前目录下的info.php文件
$zipObj->addFile('daixiaorui.zip'); //添加当前目录下的daixiaorui.zip文件
$zipObj->close();
echo 'done~';
}
else
{
echo 'failed';
}
?>
范例比较简单,其实ZipArchive类远不止这些方法,如果读者需要更丰富的功能,请查看文档手册
下面我们来看一篇关于dwz增删改查不局部刷新,希望这篇文章能够帮助到各位朋友,具体的细节步骤如下文介绍.一个小项目,用到了dwz,苦于官方少于维护且需要一部分前端技术一直没有深挖,迫在眉睫,遇到了跟很多人一样的问题,就是增删改查不能局部刷新,苦恼啊。经多多放查找资料和翻阅源码终于皇天不负有心。
项目使用TP3.1.3
需要做一下修改
找到 Thinkphp/lib/core/Action.class.php
查找 ajaxReturn 方法
注释掉
if(func_num_args()>2) {// 兼容3.0之前用法
$args = func_get_args();
array_shift($args);
$info = array();
$info['data'] = $data;
$info['info'] = array_shift($args);
$info['status'] = array_shift($args);
$data = $info;
$type = $args?array_shift($args):'';
}
然后在下方添加
if(method_exists($this,"ajaxAssign")) $this->ajaxAssign($data);//ajax赋值扩展
完整代码如下
/**
* Ajax方式返回数据到客户端
* @access protected
* @param mixed $data 要返回的数据
* @param String $type AJAX返回数据格式
* @return void
*/
protected function ajaxReturn($data,$type='') {
// if(func_num_args()>2) {// 兼容3.0之前用法
// $args = func_get_args();
// array_shift($args);
// $info = array();
// $info['data'] = $data;
// $info['info'] = array_shift($args);
// $info['status'] = array_shift($args);
// $data = $info;
// $type = $args?array_shift($args):'';
// }
if(method_exists($this,"ajaxAssign")) $this->ajaxAssign($data);//ajax赋值扩展
if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
switch (strtoupper($type)){
case 'JSON' :
// 返回JSON数据格式到客户端 包含状态信息
//header('Content-Type:application/json; charset=utf-8');
header('Content-Type:text/html; charset=utf-8'); //zhanghuihua
exit(json_encode($data));
case 'XML' :
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler.'('.json_encode($data).');');
case 'EVAL' :
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
default :
// 用于扩展其他返回格式数据
tag('ajax_return',$data);
}
}
在任意一出添加
protected function ajaxAssign(&$result){
$result['statusCode'] = $result['status'];
$result['navTabId'] = $_REQUEST['navTabId'];
$result['message']=$result['info'];
}
退出DWZ,重新登录 再试试吧!
function ping($data){ $server_url = array( 'baidu' => 'http://ping.baidu.com/ping/RPC2', // 'google' => 'http://blogsearch.google.com/ping/RPC2', //'bloglines' => 'http://www.bloglines.com/ping' ); $xml = ' weblogUpdates.extendedPing ' . $data['blog_name'] . ' ' . $data['blog_home'] . ' ' . $data['blog_url'] . ' ' . $data['rss_url'] . ' ' $xml_baidu = ' weblogUpdates.extendedPing ' . $data['blog_name'] . ' ' . $data['blog_home'] . ' ' . $data['blog_url'] . ' ' . $data['rss_url'] . ' ' foreach ($server_url as $k => $s){ $s = trim($s); if(!empty($s)){ $c = curl_init(); $header = array( "Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml" ); curl_setopt _array( $c, array( CURLOPT_URL => $s, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $k === 'baidu' ? $xml_baidu : $xml ) ); $content=curl_exec($c); var_dump($content); curl_close($c); } } }egister_shutdown_function 函数是什么函数呢,我们一起来看看关于egister_shutdown_function 用法吧,具体的细节步骤如下.
设定错误和异常处理三函数
register_shutdown_function(array(‘Debug’,'fatalError’)); //定义PHP程序执行完成后执行的函数
set_error_handler(array(‘Debug’,'appError’)); // 设置一个用户定义的错误处理函数
set_exception_handler(array(‘Debug’,'appException’)); //自定义异常处理。
下面讲一下register_shutdown_function() 函数.
功能:register_shutdown_function() 函数可实现当程序执行完成后执行的函数,其功能为可实现程序执行完成的后续操作。程序在运行的时候可能存在执行超时,或强制关闭等情况,但这种情况下默认的提示是非常不友好的,如果使用register_shutdown_function()函数捕获异常,就能提供更加友好的错误展示方式,同时可以实现一些功能的后续操作,如执行完成后的临时数据清理,包括临时文件等。
可以这样理解调用条件:
1、当页面被用户强制停止时
2、当程序代码运行超时时
3、当PHP代码执行完成时,代码执行存在异常和错误、警告
实例说明
1. 一个简介的例子 , 调用一个函数
<?php
function test() {
echo "test()";
}
register_shutdown_function(array("test"));
echo "show: ";
?>
这个例子输出
show: test()
这个函数的作用就是在退出脚本前,调用已经注册的函数,并执行该函数。
2. 在类中用一个数组作为一个参数
<?php
class ClassDemo {
public function __construct() {
register_shutdown_function(array($this, "f"));
}
public function f() {
echo "f()";
}
}
$demo = new ClassDemo();
echo "before </br>";
?>
输出:
before
f()
3. 带有参数的例子:
<?php
function f($str) {
echo $str."<br>";
}
register_shutdown_function("f","hello");
class ClassDemo {
public function __construct() {
register_shutdown_function(array($this, "f"),"hello");
}
public function f($str) {
echo "f():".$str;
}
}
$demo = new ClassDemo();
echo "before </br>";
?>
注意事项
1,register_shutdown_function()函数可重复调用,但执行的顺序与注册的顺序相同
2,如果在调用register_shutdown_function()函数之前有exit()函数调用,register_shutdown_function()函数将不能执行
3,PHP4后支持注册函数参数传递
4,在某些服务端,如Apache,当前目录在register_shutdown_function()函数中能够改变
5,register_shutdown_function()函数执行在headers发送之后
相关文章
- 这篇文章主要介绍了Go语言压缩和解压缩tar.gz文件的方法,实例分析了使用Go语言压缩文件与解压文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-05-03
- 利用php实现将文件批量压缩打包下载,这个过程中将使用到 ZipArchive 这个类,注意使用该类之前,linux需开启zlib,windows需取消php_zip.dll前的注释。下面直接给出一个简单的将文件压缩为 zip 格式的示例。具体用法请查询p...2015-10-30
- 这篇文章主要给大家介绍了关于微信小程序对图片进行canvas压缩的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-12
- 这篇文章主要介绍了C#自定义字符串压缩和解压缩的方法,通过自定义C#字符串操作类实现对字符串的压缩与解压的功能,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
本文主要主要介绍了利用ICSharpCode.SharpZipLib第三方的DLL库实现在线压缩和解压缩的功能,并做了相关的代码演示。...2020-06-25- 这篇文章主要介绍了Linux下常用压缩格式的压缩与解压方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
- 这篇文章主要介绍了vue在图片上传的时候压缩图片,帮助大家缓解服务器压力,提高程序性能,感兴趣的朋友可以了解下...2020-11-18
- PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下利用php zipA...2015-10-30
- 本文实例讲述了php压缩和解压缩字符串的方法。...2015-03-15
- 这篇文章主要为大家介绍了利用R语言怎样解压与压缩.tar.gz.zip等各种压缩格式文件实现过程方法,有需要的朋友可以借鉴参考下希望能够有所帮助...2021-11-25
- 这篇文章主要给大家介绍了关于C#压缩、解压文件夹/文件(带密码)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-04
- 网站页面的响应速度与用户体验息息相关,直接影响到用户是否愿意继续访问你的网站,所以这篇文章主要给大家介绍了关于Vue项目打包、合并及压缩优化网页响应速度的相关资料,需要的朋友可以参考下...2021-07-07
- 在php中可以直接调用linux中的文件压缩命令来实现文件快速压缩与解压缩,有需要的朋友可参考参考。 用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动! /*拆分成3个...2016-11-25
- 这篇文章主要为大家详细介绍了JS实现异步上传压缩图片,并立即显示图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-04-27
- 我们运行打包后会发现less转为了css文件,但css文件确通过js加入style标签,下面我们将css进行拆分出来,并以link标签引入,具体实现步骤一起看看吧...2021-10-19
- PHP4 采用了缓冲机制,在你决定发送以前,所有内容只是存在于缓冲中 ,而不是直接发送给浏览器 ,虽然你可以用 header 和 setcookie 函数来实现, 但是这两个函数相比于功能强...2016-11-25
- 这篇文章主要介绍了zlib库压缩和解压字符串STL string的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了c#调用winrar解压缩文件的方法,大家参考使用吧...2020-06-25
- 下面小编就为大家分享一篇c# 文件压缩zip或将zip文件解压的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 注明这款php教程文件压缩代码他要借助于zip.exe文件哦,所以我们要把zip.exe压缩文件给拿出来哦。 <?php if ( !IsSet($_GET['dirname']) ) { show_input_form() ;...2016-11-25