1、首先看下 phpize命令 所在的目录  (ps:我的目录/usr/bin/phpize)
如果没有找到的话 执行安装

yum install php53_devel (ps:请注意自己的版本)

安装完毕后。会生成phpize命令

2、去php.net下载相应版本的php源文件
咱们以php-5.3.17 为例吧,解压后,进入相应的模块下

cd ext/pcntl
#先执行phpize
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config (ps:请正确的指定php-config的目录)
#编译、安装
make && make install

这时候出了一个错误

./configure编译正常,但make出错
error: ‘PHP_FE_END' undeclared here (not in a function)

解决方法:

源代码有错误,进入php-5.3.17目录
sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/*.c
sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/**/*.c

再重新make && make install

3、编译完毕后会生成了一个  pcntl.so的文件。在php的model目录里

编辑/etc/php.ini,加入

extension=pcntl.so

4、重启apache

service httpd restart

5、测试是否安装成功

<?php
echo pcntl_fork();
?>

输出:23165

php代码:
/**
* 导出文件
* @return string
*/
public function export()
{
$file_name = "成绩单-".date("Y-m-d H:i:s",time());
$file_suffix = "xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file_name.$file_suffix");
//根据业务,自己进行模板赋值。
$this->display();
}

HTML代码:

<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
</head>
<body>
<table border=1 cellpadding=0 cellspacing=0 width="100%" >
<tr>
<td colspan="5" align="center">
<h2>成绩单</h2>
</td>
</tr>
<tr>
<td style='width:54pt' align="center">编号</td>
<td style='width:54pt' align="center">姓名</td>
<td style='width:54pt' align="center">语文</td>
<td style='width:54pt' align="center">数学</td>
<td style='width:54pt' align="center">英语</td>
</tr>
<tr>
<td align="center">1</td>
<td style="" align="center">Jone</td>
<td style="" align="center">90</td>
<td style="" align="center">85</td>
<td style="" align="center">100</td>
</tr>
<tr>
<td align="center">2</td>
<td style="" align="center">Tom</td>
<td style="" align="center">99</td>
<td style="" align="center">85</td>
<td style="" align="center">80</td>
</tr>
</table>
</body>
</html>

我们再来看一个更方便的组件

在这里需要用到PEAR的两个软件包 Spreadsheet Excel Writer 和 OLE,如果没有可以分别从 http://pear.php.net/package/Spreadsheet_Excel_Writer/ 和 http://pear.php.net/package/OLE/ 下载,解压放在PEAR目录下。

全部代码如下:

<?php
include 'Writer.php';
/* *** 准备导出的数据 *** */
$head = 'One Week Schedule';
$data = array('Monday' => array( array('time' => '09:00', 'event' => '公司例会例会'), array('time' => '14:00', 'event' => '部门例会') ),
'Tuesday' => array( array('time' => '09:30', 'event' => '和 Mr. Stinsen 早餐')),
'Wednesday' => array(array('time' => '12:10', 'event' => '市场中阶报告'), array('time' => '15:30', 'event' => '市场部战略部署会议') ),
'Thursday' => array( array('time' => '', 'event' => '')),
'Friday' => array( array('time' => '16:00', 'event' => 'WoC Stock 研讨会'), array('time' => '17:00', 'event' => '飞往华尔街'), array('time' => '21:00', 'event' => '会见克林顿'))
);
/* *** *** */
$workbook = new Spreadsheet_Excel_Writer();
$filename = date('YmdHis').'.xls';//csv
$workbook->send($filename); // 发送 Excel 文件名供下载
$workbook->setVersion( 8 );
$sheet = &$workbook->addWorksheet("Sheet1"); // 创建工作表
$sheet->setInputEncoding('utf-8'); // 字符集
$headFormat = &$workbook->addFormat(array('Size' => 14, 'Align' => 'center','Color' => 'white', 'FgColor' => 'brown', 'Bold'=>'1', 'Border' => '1'));//定义格式
$dayFormat = &$workbook->addFormat(array('Size' => 12, 'Align' => 'center', 'VAlign' => 'vcenter', 'FgColor' => 'green', 'Color' => 'white', 'Border' => '1'));//定义格式
$dataFormat = &$workbook->addFormat(array('Size' => 10, 'Align' => 'left', 'Border' => '1', 'Color' => 'black', 'FgColor'=> 'cyan'));//定义格式
$sheet->setColumn(0, 0, 20); // 设置宽度
$sheet->setColumn(1, 1, 15); // 设置宽度
$sheet->setColumn(2, 2, 30); // 设置宽度
$r = 0; 
$sheet->write(0, $r, $head, $headFormat); // 表格标题
$sheet->mergeCells(0, 0, 0, 2); // 跨列显示
$r++; // 数据从第2行开始
foreach ($data as $day => $events){
$c = 0;
$sheet->write($r, $c, $day, $dayFormat);
if (!$events){
// 当天没有计划
$r++;
} else {
$startRow = $r;
foreach ($events as $e){
$c = 1;
$sheet->write($r, $c++, $e['time'], $dataFormat); // 工作表写入数据
$sheet->write($r, $c++, $e['event'], $dataFormat); // 工作表写入数据
$r++;
}
// 合并 $day 单元格
$sheet->mergeCells($startRow, 0, $r - 1, 0);
}
}
$workbook->close(); // 完成下载
 ?>

Linux系统中为php添加pcntl扩展的方法的更多相关文章

  1. 用户管理 之 在Linux系统中,批量添加用户的操作流程

    一.阅读此文件您需要掌握的基础知识: <Linux 用户(user)和用户组(group)管理概述><用户(user)和用户组(group)配置文件详解><Linux 用 ...

  2. Linux系统下使用crontab添加计划任务的方法

     在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...

  3. Linux系统中存储设备的两种表示方法

    转:https://blog.csdn.net/holybin/article/details/38637381 一.对于IDE接口的硬盘的两种表示方法: 1.IDE接口硬盘,对于整块硬盘的两种表示方 ...

  4. linux系统中如何进入退出vim编辑器,方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了.偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致强 ...

  5. [转] linux系统中如何进入退出vim编辑器,方法及区别

    原文链接:http://www.cnblogs.com/crazylqy/p/5649860.html 在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触 ...

  6. 【转】linux系统中如何进入退出vim编辑器,方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...

  7. linux系统中如何进入退出vim编辑器的方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...

  8. 三、Linux系统中的文件类型和文件扩展名

    .sock文件也是一类特殊的文件,这类文件通常用在网络之间进行数据连接,如:我们可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行通信: linux中的文件类型 文件类型介绍 Linux系 ...

  9. MAMP 环境下为 php 添加 pcntl 扩展

    前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...

随机推荐

  1. android 线程学习

    很多人觉得线程难理解,主要有两个问题: 线程休眠,既然线程已经休眠了,程序的运行速度还能提高吗? 线程体一般都进行死循环,既然线程死循环,程序就应该死掉了,就会没有反应. 1.关于线程休眠问题 对线程 ...

  2. 解决:warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;找到 MSIL .netmodule 或使用 /GL 编译的模块;正在。。;LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)

    参考资料: http://blog.csdn.net/laogaoav/article/details/8544880 http://stackoverflow.com/questions/18612 ...

  3. ARC 没有自动释放内存

    http://www.cnblogs.com/qingche/p/4569833.html 定位了好几天,才发现是打印日志没有即时释放内存,使用intrustment

  4. LuaExpat笔记

    xml xml是一种格式化数据交换语言, 适用于在网络上不同应用会话. http://www.xml.com/pub/a/98/10/guide0.html exPat 一种C语言实现的 xml 文档 ...

  5. Windows2000安装Winform Clickonce提示升级系统版本的解决方案

    Windows2000安装Winform Clickonce提示升级系统版本.只需要把所有应用的DLL的独立性设置为false就可以了.

  6. git提交

    1.git pull 本地已经commit 2.git checkout master 3.git pull 4.git checkout - 5.git merge master 6.git pus ...

  7. 为benchmarksql的PostgreSQL java驱动进行升级

    为benchmarksql的PostgreSQL java驱动进行升级[root@minion1 benchmarksql-4.1.0]# wget https://jdbc.postgresql.o ...

  8. php面向对象(OOP)编程完全教程

    摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...

  9. [转] JVM 调优系列 & 高并发Java系列

    1.JVM调优总结(1):一些概念:http://www.importnew.com/18694.html 2.JVM调优总结(2):基本垃圾回收算法:http://www.importnew.com ...

  10. JS_01_入门学习

    01:编写js文件:JavaScript_01.js // JavaScript Document //1.利用JavaScript来输出文字 <script type="text/j ...