日志

MAMP PRO 安装PHP扩展 以Memcache为例

1.编译memcache模块需要php的源码,根据php版本去官网下载php的源码,我的是php5.3.29

2.生成zend_config.h备用

cd php5.3.29

./configure

3.安装autoconf,已安装可以无视

curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.bz2;

tar -xvf autoconf-2.68.tar.bz2

cd autoconf-2.68

./configure && make

sudo make install

4.下载编译安装

curl -O http://pecl.php.net/get/memcache-2.2.4.tgz;

tar xf memcache-2.2.4.tgz;

cd memcache-2.2.4;

mkdir /Applications/MAMP/bin/php/php5.3.29/include/

# /Volumes/SOFT/php-5.3.29 是 php 的目录,根据实际自己改
ln -s /Volumes/SOFT/php-5.3.29 /Applications/MAMP/bin/php/php5.3.29/include/php

#建议 pwd 一下看看当前目录是不是memcache-2.2.4下,下面两行命令都必须要在这个目录下执行
/Applications/MAMP/bin/php/php5.3.29/bin/phpize;

./configure --with-php-config=/Applications/MAMP/bin/php/php5.3.29/bin/php-config

make

sudo make install

5.修改php.ini的配置

(!!!!不是到MAMP/bin/php/php.3.29/conf/php.ini下修改,这样是不会生效的,曾经被坑过!)
点 mamp 菜单,file->edit template -> php -> php 5.3.29 php.ini ,增加:

extension = memcache.so

MAMP会提示重启服务,yes就好了

安装结束

在页面输出一下PHPinfo(),command+f 搜索Memcache是否已经enable即可.

转载请注明出处:

© http://hejunhao.me

日志

PHP 基于 MySQL数据 导出 EXCEL文件

操作Excel可以使用第三方开源库,例如强大的:PHPEXCEL.

这里主要采用的是非第三方类库依赖,而是基于PHP5原生支持的fputcsv实现,基本可以满足日常需求.

<?php
// 输出Excel文件头 
header('Content-Type: application/vnd.ms-excel;charset=gbk');
header('Content-Disposition: attachment;filename="文件名.csv"');
header('Cache-Control: max-age=0');

// 从数据库中获取数据 
$sql = 'select * from `table` where ……';
$stmt = @mysql->query($sql);

// PHP文件句柄,php://output 表示直接输出到浏览器 
$fp = fopen('php://output', 'a');

// 输出Excel列头信息 
$head = array('姓名', '性别', '年龄', 'Email', '电话', '……');
foreach ($head as $i => $v) {
    // CSV的Excel支持GBK编码,一定要转换,否则乱码 
    $head[$i] = iconv('utf-8', 'gbk', $v);
}

// 写入列头 
fputcsv($fp, $head);

// 计数器 
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,节约资源 
$limit = 100000;

// 逐行取出数据,节约内存 
while ($row = $stmt->fetch(FETCH_NUM)) {

    $cnt ++;
    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 
        ob_flush();
        flush();
        $cnt = 0;
    }

    foreach ($row as $i => $v) {
        $row[$i] = iconv('utf-8', 'gbk', $v);
    }
    fputcsv($fp, $row);
}