zoukankan      html  css  js  c++  java
  • Linux系统中为php添加pcntl扩展的方法

    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='54pt' align="center">编号</td>
    <td style='54pt' align="center">姓名</td>
    <td style='54pt' align="center">语文</td>
    <td style='54pt' align="center">数学</td>
    <td style='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(); // 完成下载
     ?>

  • 相关阅读:
    [Effective C++ --009]确定对象被使用前已先被初始化
    [Effective C++ --008]别让异常逃离析构函数
    [Effective C++ --007]为多态基类声明virtual析构函数
    [Effective C++ --006]若不能使用编译器自动生成的函数,就该明确拒绝
    [Effective C++ --005]了解C++默默编写并调用哪些函数
    [000]socket通信--server和client实现的简单例子
    [014]模板-模板实参推导
    [013]模板-非类型模板参数
    [012]泛型--lambda表达式捕获
    U3d keyCode值对应的按键
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/6207834.html
Copyright © 2011-2022 走看看