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发送之后