利用PHP和PEAR动态创建和编辑TAR文档

 更新时间:2016年11月25日 16:10  点击:1948



如果你曾为你的UNIX系统下载过widget,那么你肯定遇到过TAR压缩文件。在UNIX系统中磁带归档文件格式常用于打包多个文件,以便于分发kvm。

这种格式的流行不仅由于在所有UNIX系统中都存在该格式的创建工具,还因为在实际应用中,它便于保存归档文件的目录结构、许可信息、用户和组信息等写字楼。

PHP中有大量的内建函数和可连接的扩展库,可用于几乎所有文件格式。特别是笔记本维修它可以通过PEAR的Archive_Tar类读取和创建TAR文档。在本文中,我们将向你说明这个类的行为,并演示开发人员是如何利用它动态地创建,编辑和显示TAR文档。

在这里我将假设你有一个工作数据库和安装了PHP,并且正确的安装了PEAR的Archive_Tar类。

注:你可以直接从网上安装PEAR 的Archive_Tar类包,或者从网上下载安装。

创建TAR文档

让我们从一个简单的例子开始:动态创建包含几个文件的TAR文档。使用下面的脚本:
列表 A

<php
include (''Archive/Tar.php'');// import class

$obj = new Archive_Tar(''dummy.tar''); // name of archive

$files = array(''mystuff/ad.gif'',
''mystuff/alcon.doc'',
''mystuff/alcon.xls''); // files to store in archive

if ($obj->create($files)) {
echo ''Created successfully!'';
} else {
echo ''Error in file creation'';
}
>

这个脚本相当简单,但是还是值得具体看一下:

首先,创建Archive_Tar类的一个实例,初始化创建文档的路径和文件名。在本例中,文件名是dummy.tar,存于当前目录北京电磁炉。

其次,列出归档的所有文件,包括它们的磁盘地址,存于一个PHP数组中。脚本(更准确的说是运行脚本的用户)必须拥有访问这些磁盘地址的许可权,否则文档创建过程就会失败。

最后,creat()方法将所有的文件压缩到单个TAR文档。这个方法接受输入的文件名数组,返回一个布尔值表明文档是否成功创建。记住脚本必须拥有将文件写入命名磁盘地址的许可权,否则,creat()方法就无法使用,文档创建就会失败华泰圣达菲。

应用上面例子中的脚本,修改$files数组的内容以反映你的本地系统配置,在命令行或者浏览器中试着执行它,如果一切正常的话,脚本将会查找并读取这些文件到一个命名为dummy.tar的TAR文档中。

查看TAR文档内容

如何查看已经存在的TAR文件的内部信息呢?Archive_Tar类有一个listContent()方法,该方法可以查看一个TAR包中的每个组件的详细信息。列表B显示了如何使用它:

列表 B
<php
include (''Archive/Tar.php'');// import class

$obj = new Archive_Tar(''dummy.tar''); // name of archive

$files = $obj->listContent();// array of file information

foreach ($files as $f) {
foreach ($f as $k => $v) {
echo "$k: $vn";
}
echo "n";
}
>

listContent()方法的输出是一个结构化数组,温度控制器每个数组元素代表文档中的一个文件。典型的是,每个元素有相应文件的名字信息,它的许可模式,所有者和组用户的ID,状态,大小和上一次修改的时间。通过一个循环可以很容易的提取这些信息,然后再对格式稍作修改使它根据表达性,像上面的例子中提到的。下面是一个输入示例:

校验和:3872

文件名:mystuff/alcon.doc

模式:33206

用户ID:433

组ID:106

大小:41472

时间:1140358031

向已经存在的TAR文档中添加文件

由于我们大家的健忘性国内旅游,有时可能忘记某个文件,Archive_Tar 类通过add()方法提供了
向已经存在的文档中添加新文件的能力

 

 



Developer Tutorials blog 今天发表了一篇文章
 
http://www.developertutorials.com/blog/web/5-ways-to-be-a-better-php-developer-36/
 
提出了做一名优秀程序员的五点建议。
 
这里,我总结出五点提高生产率,优化代码。例如:核心函数,框架,设计模式,文档格式。如下:
 
1阅读手册(PS:这个不用多说,人手一份,手册是最核心的,任何书都不能替代手册)
 
2阅读代码(阅读别人写的代码,网上有很多优秀的代码供参考,例如:SourceForge.net )
 
3学习新框架( phpframeworks.com 框架是很好,但是在学习框架前一定要打好基础。)
 
4研究(不要只看表面和应用,应该多研究原理,例如xml-rpc,rest,oop等等)
 
5学习OOP(面向对象编程)
 
 
 
 

New on the Developer Tutorials blog today is this post offering up a few ideas (five of them) on how they think you can become a better programmer.
In this post, I''ll outline five ways to be a better developer, improve your productivity, write less code and achieve more with your web applications.There''s always more to learn when it comes to PHP development. New core functions, new frameworks, new design patterns, new code documentation styles. Here are some of the best ways you can become a better PHP developer.
His five suggestions are:
  • Read the manual
  • Browse thr


  • 安装篇(Windows平台)

        * 安装PHP环境。Zend Framework(下面简称ZF)需要PHP 5.1.4+才能正常运行。如果你已经安装了PHP环境,跳过这一步。在Win下,我推荐使用WAMP做为开发环境。只要一路next,WAMP就把Apache、PHP5、MySQL5、phpMyAdmin等都装好了。(提醒:装好后mysql用户root默认密码为空)。点击WAMP的图标在ApacheModules下开启rewrite_module。如果你要使用Zend_Db以 Mysql为例,还得开启PHP Setting->;PHPExtensions下的php_pdo和php_pdo_mysql扩展。
        * 安装TortoiseSVN。 TortoiseSVN是svn在win下的客户端。安装TortoiseSVN的目的是为了获取最新的ZF源码,如果你使用zend定期发布的zf的源码,可以跳过这一步。
        * 获取ZF源码。如果使用TortoiseSVN,在你磁盘的某处建立一个文件夹(比如ZF),在文件夹上点击右键,选择SVNcheckout,在地址栏中输入http://framework.zend.com/svn/framework/trunk,点击确定,TortoiseSVN就开始工作获取zf的源码了。你也可以http://framework.zend.com/download下载源码。不过总得来说,还是使用SVN方便。
        * 为ZF添加路径。编辑php.ini(wamp的php.ini在apache/bin目录下),编辑include_path字段(举例include_path = ".;G:你的ZF路径library")。
        * 配置ZF项目。推荐使用Haohappy的方法http://www.111cn.net/bbs/thread-5730-1-4.html。
        * 开始旅程。推荐论坛里的xgwork的新手学习 Zend Framework 框架连载(因为上一步中已经为ZF添加了路径,所以在该教程中的set_include_path可以省略),还有IBM的《理解Zend Framework》系列。

    Apache的配置:

    编辑httpd.conf文件
    找到
    #LoadModule rewrite_module modules/mod_rewrite.so 这行并将前面的”#”去掉

    最后找到
    AllowOverride None
    更改为:
    AllowOverride All,才能让/htaccess文件起作用
    到此Apache的配置完成

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.111cn.net/mayongzhan - 马永占,myz,mayongzhan

    首先感谢一下小李教我这个东西.

    前提:
    windows下
    已经使用ssh工具用rsa连好了远程的linux
    (就是说只是不会使用eclipse连接)

    步骤:
    打开zend studio for eclipse
    在php explorer(就是项目)旁边有个remote
    里面就是远程的服务器了.
    new Connection
    选择SSH only
    NEXT
    Hostname添地址 Connectionname和上面一样,Description随便
    NEXT
    NEXT
    FINISH
    然后点菜单栏
    window - preferences
    在过滤总直接输入ssh
    然后看到ssh2点
    点第二个key management
    generate RSA key...
    下面的passphrase两个输入密码
    ...先不要点确定...
    先把那段代码复制到linux下的你的目录下的.ssh 的au*****文件下
    然后...在点确定....
    然后连吧....
     




     在一开始看zend框架时,感觉好象谁告诉我就入口文件(index.php)一定要放在网站的有基地址上!
    然后我就累不拉急的把 htdocs文件夹 (我用的是xampp安装包安装的,据说这个就是基地址的目录,呵) 下的所有文件都移走了,然来把zend的请进来,一试,成功了,呵呵,心里还老高兴了。

    后来发现这样的话,我这台电脑不是只能有一个网站了吗?因为所有的都是从这个zend里的index.php开始的啊?不爽,上网搜了一圈,功夫不负 search 人!给我找到了,哈哈,
    基本做法是这样的:
    1.将你的网站文件移到你想的文件夹下,如 zend

    2. 在C:WINDOWSsystem32driversetchosts 加一个域名, 如

    .......
    127.0.0.1 zendhost

    其实也就是本地解析一个域名了

    3.在apacheconfhttpd.conf 文件的最后加上:
    ............
    NameVirtualHost 127.0.0.1
    <VirtualHost 127.0.0.1>
            ServerName zendhost
            DocumentRoot D:xampphtdocszend
            RewriteEngine On
    </VirtualHost>

    OK,重启,在地址栏里输入:zendhost 回车,搞定爽啊,

    终于可以了,可是可笑的就在这里,今天从同事里那才现在。原来,本来就没有那有复杂,其实任意放在一个文件夹下,在地址栏里输:如 127.0.0.1/zendhost 就可以了,呵呵,我真是苯啊!我后来再看了一下代码,原来是我在 index.php 里多加了一句话:

    $controller->setBaseUrl(''/''); 所以所有的请来都转到根目录了!



    <
    [!--infotagslink--]

    相关文章

    • ps动态环绕动画效果怎么制作

      ps动态环绕动画效果是现在很多人都非常喜欢的,大多数人还不知道ps动态环绕动画效果怎么制作下面文章就给大家介绍下ps怎么制作科技感十足的动态环绕动画效果,一起来看看...2017-07-06
    • vue 实现动态路由的方法

      这篇文章主要介绍了vue 实现动态路由的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-06
    • Vue实现动态查询规则生成组件

      今天我们来给大家介绍下在Vue开发中我们经常会碰到的一种需求场景,本文主要介绍了Vue动态查询规则生成组件,需要的朋友们下面随着小编来一起学习学习吧...2021-05-27
    • JavaScript动态创建div属性和样式示例代码

      1.创建div元素: Javascript代码 复制代码 代码如下: <scripttypescripttype="text/javascript"> functioncreateElement(){ varcreateDiv=document.createElement("div"); createDiv.innerHTML="Testcreateadiveleme...2013-10-13
    • c#动态调用Webservice的两种方法实例

      这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
    • SQL Server中执行动态SQL

      本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
    • C#中动态显示当前系统时间的实例方法

      想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
    • jQuery为动态生成的select元素添加事件的方法

      下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
    • JS创建Tag标签的方法详解

      这篇文章主要介绍了JS创建Tag标签的方法,结合具体实例形式分析了javascript动态操作页面HTML元素实现tag标签功能的步骤与相关操作技巧,需要的朋友可以参考下...2017-06-15
    • jQuery动态添加与删除tr行实例代码

      最近由于项目的需要,需要动态的添加和删除table中的tr,感觉用JS可以实现,但是在网上找了一下,单纯的自己写JS,感觉太麻烦,而且也不好维护。于是想到了最近学的jQuery。这篇文章给大家用实例介绍了jQuery动态添加与删除tr行的方法,有需要的朋友们可以参考借鉴。...2016-10-20
    • 用C++面向对象的方式动态加载so的方法

      下面小编就为大家带来一篇用C++面向对象的方式动态加载so的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
    • C#实现动态显示及动态移除图片方法

      这篇文章主要介绍了C#实现动态显示及动态移除图片方法,对于C#的初学者了解图像操作有一定的帮助,需要的朋友可以参考下...2020-06-25
    • 什么是cookie?js手动创建和存储cookie

      什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31
    • PS如何创建变形文字 ps给文字变形的方法

      PS怎么创建变形文字?ps中想要给输入的文字变形,该怎么调整文字的显示形态呢?下面我们就来看看ps给文字变形的方法,需要的朋友可以参考下 我们在图层上输入文字后,可以...2017-07-06
    • idea 无法创建Scala class 选项的原因分析及解决办法汇总

      这篇文章主要介绍了idea 无法创建Scala class 选项的解决办法汇总,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
    • Springboot使用thymeleaf动态模板实现刷新

      这篇文章主要介绍了Springboot使用thymeleaf动态模板实现刷新,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-31
    • vue2 中如何实现动态表单增删改查实例

      本篇文章主要介绍了vue2 中如何实现动态表单增删改查实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-06-15
    • php创建无限级树型菜单

      写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.。 大概步骤如下: step1:到数据库取数据,放到一个数组, step2:把数据转化为一个树型状的数组, step3:把这个树型状的数组转为html代码。...2015-11-08
    • Drupal模块开发之创建自己的钩子

      Drupal可以让第三方模块创建自己的钩子。在通常的实践中,有两种类型的钩子你可能想要创建,一种是内容修改类的钩子,一种是拦截类的钩子。 Drupal的钩子系统允许和模...2016-11-25
    • javascript创建对象的几种模式介绍

      下面小编就为大家带来一篇javascript创建对象的几种模式介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考...2016-05-09