设为首页 收藏本站
查看: 686|回复: 0

[经验分享] Linux系统中为php添加pcntl扩展的方法

[复制链接]

尚未签到

发表于 2017-12-30 19:34:28 | 显示全部楼层 |阅读模式
  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; ">
  <meta name=ProgId content=Excel.Sheet>
  <meta name=Generator content="Microsoft Excel 11">
  </head>
  <body>

  <table border=1 cellpadding=0 cellspacing=0>  <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 align="center">Jone</td>
  <td align="center">90</td>
  <td align="center">85</td>
  <td align="center">100</td>
  </tr>
  <tr>
  <td align="center">2</td>
  <td align="center">Tom</td>
  <td align="center">99</td>
  <td align="center">85</td>
  <td 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(); // 完成下载
  ?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430018-1-1.html 上篇帖子: [PHP] 下篇帖子: PHP 将字符串转换为字符集格式UTF8/GB2312/GBK 函数iconv()
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表