PHP生成zip压缩包的常用方法示例
本文实例讲述了PHP生成zip压缩包的常用方法。分享给大家供大家参考,具体如下:压缩一个文件我们将一个文件生成一个压缩包。<?php
$path = "c:/wamp/www/log.txt";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE); //打开压缩包
$zip->addFile($path,basename($path)); //向压缩包中添加文件
$zip->close(); //关闭压缩包上述代码将c:/wamp/www/log.txt文件压缩生成了test.zip,并保存在当前目录。压缩多个文件压缩多个文件,其实就是addFile执行多次,可以通过数组的遍历来实现。<?php
$fileList = array(
"c:/wamp/www/log.txt",
"c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE); //打开压缩包
foreach($fileList as $file){
$zip->addFile($file,basename($file)); //向压缩包中添加文件
}
$zip->close(); //关闭压缩包压缩一个目录<?php
function addFileToZip($path,$zip){
$handler=opendir($path); //打开当前文件夹由$path...
查看全文
posted @ 2021-01-26 20:09:42
MYSQL优化项
一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的 (4)禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”。数据库擅长存储与索引,CPU计算还是上移吧 (5)禁止存储大文件或者大照片解读:为何要让数据库做它不擅长的事情?大文件和照片存储在文件系统,数据库里存URI多好 二、命名规范(6)只允许使用内网域名,而不是ip连接数据库 (7)线上环境、开发环境、测试环境数据库内网域名遵循命名规范业务名称:xxx线上环境:dj.xxx.db开发环境:dj.xxx.rdb测试环境:dj.xxx.tdb从库在名称后加-s标识,备库在名称后加-ss标识线上从库:dj.xxx-s.db线上备库:dj.xxx-sss.db (8)库名、表名、字段名:小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用 (9)表名t_xxx,非唯一索引名idx_xxx,唯一索引名uniq_xxx 三、表设计规范(10)单实例表数目必须小于500 (11)单表列数目必须小于30 (12)表必须有主键,例如自增主键解读:a)主键递增,数据行写入可以提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用b)主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率c) 无主键的表删除,在row模式的主从架构,会导致备库夯住 (13)禁止使用外键,如果有外键完整性约束,需要应用程序控制解读:外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,十分影响sql 的性能,甚至会造成死锁。高并发情况下容易造成数据库性能,大数据高并发业务场景数据库使用以...
查看全文
posted @ 2016-12-14 11:38:37
PDO MYSQLI MYSQL 的区别
MYSQL,MYSQLI 这两个扩展本身就是访问MYSQL数据库的驱动PDO则是一个抽象层接口向程序员提供可调用的API是由,MYSQL驱动、MYSQLI驱动,以及PDO来提供。PDO_MYSQL 是实现了PDO接口的MYSQL数据库驱动扩展,但本身不向用户提供API。实际上它处于PDO层的下层,为PDO提供MYSQL交互的功能Mysql Native(mysqlnd)虽然也是驱动扩展,但可以认为他不是API。从下表可以看出他们之间是怎样的关系 PHP的mysqli扩展PDO (使用PDO MySQL驱动和MySQL Native驱动)PHP的mysql扩展引入的PHP版本5.0+5.0+3.0之前PHP5.x是否包含是是是MySQL开发状态活跃在PHP5.3中活跃仅维护在MySQL新项目中的建议使用程度建议 - 首选建议不建议API的字符集支持是是否服务端prepare语句的支持情况是是否客户端prepare语句的支持情况否是否存储过程支持情况是是否多语句执行支持情况是大多数否是否支持所有MySQL4.1以上功能是大多数否
查看全文
posted @ 2017-02-10 11:35:01
PHP常用的设计模式
1.单例模式含义:单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。要点:1. 一是某个类只能有一个实例;2. 二是它必须自行创建这个实例;3. 三是它必须自行向整个系统提供这个实例。场景:1. php的应用主要在于数据库应用, 一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模式, 则可以避免大量的new 操作消耗的资源,还可以减少数据库连接这样就不容易出现 too many connections情况。2. 如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看zend Framework的FrontController部分。3. 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。示例:class man
{
//保存例实例在此属性中
private static $_instance;
//构造函数声明为private,防止直接创建对象
private function __construct()
{
echo '我被实例化了!';
}
//单例方法
public static function get_instance()
{
var_dump(isset(self:...
查看全文
posted @ 2017-02-08 09:22:59
TortoiseGit(乌龟git)保存用户名密码的方法
windows下比较比较好用的git客户端有2种:1. msysgit + TortoiseGit(乌龟git)2. GitHub for Windowsgithub的windows版也用过一段时间,但还是不太习惯。所以目前仍然青睐与msysgit+乌龟git的组合。TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:方法一:设置 -> git 编辑本地 .git/config 增加[credential] helper = store保存,输入一次密码后第二次就会记住密码了方法二:1. Windows中添加一个HOME环境变量,值为%USERPROFILE%2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件3. 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存:machine github.com #git服务器名称login user #git帐号password pwd #git密码在windows上建_netrccopy con _netrc #创建_netrc文件#依次输入以下3行:machine github.com #git服务器名称login username #git帐号password password #git密码在最后一行后输入ctrl+z,文件会自动保存并退出再次在git上提交时就不用重复输入用户名密码了
查看全文
posted @ 2016-04-13 09:04:22
Smarty中foreach的一些常用方法
1. foreach 的index (循环次数,从0开始)<table>{foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 5 == 0} <tr><th>Title</th></tr> {/if} <tr><td>{$i.label}</td></tr>{/foreach}</table>2. iteration和index示例{foreach from=$myArray item=i name=foo}{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},{/foreach}{* 该例将输出0|1, 1|2, 2|3, ... 等等 *}.iteration包含当前循环次数,与index不同,从1开始,每次循环增长1。3.循环的第一次,最后一次,总次数foreach from=$myArray item=i name=foo}{if $smarty.foreach.foo.first} //第一次{/if}{if $smarty.foreach.foo.last} //最后一次{/if}{$smarty.foreach.foo.total} //总次数{/foreach}怎样在smarty模板中调用php的内置函数模板书写:{'param1'|functionName:'param2':'param3'}php函数原型:echo functionName('param1','param2','param3');实例:{'1234567'|substr:'1...
查看全文
posted @ 2015-09-22 11:34:56
将中文全角字符转成半角
/**
* @desc 将中文全角字符转换成半角
* @author huangxiaoyun
* @date 2014-04-22
* @param string $str
* @return string
*/
function make_semiangle($str) {
$arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',
'5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',
'F' => 'F', 'G' =&g...
查看全文
posted @ 2015-09-22 11:06:52
支持中文的 coreseek/sphinx 在window下的安装和使用
Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景,用户可以免费下载使用;同时针对有实际需要的客户,我们还提供专业的搜索技术与本地化的Sphinx技术支持服务(客户中,记录量最大已超过30亿条,文本容量最大已超过5TB)。1. coreseek的下载 官方下载地址: http://www.coreseek.cn/products-install/install_on_windows/, 这里我直接上传了一个coreseek-4.1的版本,如果不想去官方下, 就直接下我这个coreseek-4.1-win32.zip2. 解压 将下载好的压缩包解压到一个目录, 这里就暂时解压到d盘下, 放了方便管理,在d盘下新建一个sphinx的文件夹,将解压出来的文件全放到sphinx中, 现在进入d:/sphinx应该能看到 d:/sphinx/api d:/sphinx/bin d:/sphinx/etc d:/sphinx/var 等等...3. 准备数据表 打开mysql, 新建一个sphinx_test的数据库(库名自定义,需utf-8编码),在sphinx_test里面添加2个数据表,表t_counter用来记录本次造索引数据的最大ID,方便接下来做增量时只需要查询出大于最大ID的数据即可CREATE TABLE `t_counter` (
`typeid` int(11) NOT NULL,
`maxid` int(11) NOT NULL,
`updatetime`...
查看全文
posted @ 2015-09-02 11:57:04