Double段

Double段 查看完整档案

北京编辑河北科技大学  |  计算机科学与技术 编辑  |  填写所在公司/组织 segmentfault.com/blog/duanzhichao 编辑
编辑

穿过旷野的风,你慢些走~

个人动态

Double段 赞了回答 · 5月23日

解决关于怎么让div宽度自适应文字内容?

直接用css3的fit-content:

width:fit-content;
width:-webkit-fit-content;
width:-moz-fit-content;

关注 8 回答 5

Double段 发布了文章 · 2019-06-24

PHP初级开发知识体系图

赞 6 收藏 5 评论 0

Double段 评论了文章 · 2019-05-14

PHP高效导出Excel(CSV)

CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。
如果你导出的Excel没有什么高级用法的话,只是做导出数据用那么建议使用本方法,要比PHPexcel要高效的多。
二十万数据导出大概需要23秒。

 /**
 * 导出excel(csv)
 * @data 导出数据
 * @headlist 第一行,列名
 * @fileName 输出Excel文件名
 */
function csv_export($data = array(), $headlist = array(), $fileName) {
  
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
    header('Cache-Control: max-age=0');
  
    //打开PHP文件句柄,php://output 表示直接输出到浏览器
    $fp = fopen('php://output', 'a');
    
    //输出Excel列名信息
    foreach ($headlist as $key => $value) {
        //CSV的Excel支持GBK编码,一定要转换,否则乱码
        $headlist[$key] = iconv('utf-8', 'gbk', $value);
    }
  
    //将数据通过fputcsv写到文件句柄
    fputcsv($fp, $headlist);
    
    //计数器
    $num = 0;
    
    //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
    $limit = 100000;
    
    //逐行取出数据,不浪费内存
    $count = count($data);
    for ($i = 0; $i < $count; $i++) {
    
        $num++;
        
        //刷新一下输出buffer,防止由于数据过多造成问题
        if ($limit == $num) { 
            ob_flush();
            flush();
            $num = 0;
        }
        
        $row = $data[$i];
        foreach ($row as $key => $value) {
            $row[$key] = iconv('utf-8', 'gbk', $value);
        }

        fputcsv($fp, $row);
    }
  }
查看原文

Double段 关注了用户 · 2018-02-05

soledad @soledad

我们努力的付出想换来的是什么,我只想让自己过得快乐点

关注 26

Double段 关注了用户 · 2017-10-20

fighter @fighter_58f5bf2d120bd

A phper and gopher :)

关注 1

Double段 发布了文章 · 2017-10-20

Docker中配置Nginx与PHP

最近在学docker,顺便配置了一下docker中的nginx与php,发现网上的关于docker中配置nginx与php的资料很少,而且有的也很旧,没有太多的参考性,所以决定自己写一篇,分享一下其中的经验。

版本说明

  1. docker: Version 17.06.2-ce-mac27 (19124)
  2. PHP:7.1
  3. Nginx:1.13.3
  4. 操作系统 Mac 10.12.6

安装docker

直接上docker的官网https://www.docker.com下载docker For Mac这个版本,是docker专门为mac系统编写的软件,相当于一个app,下载安装好后,打开docker App,然后在App中启动docker即可。

安装Nginx

启动docker之后,打开命令行,你的命令行里面就有了docker这个命令:

clipboard.png

然后我直接使用的是官方的nginx镜像,下载方法:

docker pull nginx

等待下载完即可。

安装PHP

同理,我也是使用的官方的PHP镜像,其实nginx和php我都推荐官方的镜像,毕竟官方镜像代表着安全和稳定。

docker pull php:7.1-fpm

你如果想下载其他的版本,上官方镜像上面去看一下,都有各种版本的说明,想下载什么版本的都有。我这里就用的最新的php版本了。

启动Nginx

安装好nginx之后,便用命令启动它:

docker run -p 80:80 --name mynginx -v /Users/Doubleduan/Documents/project:/home -v /Users/Doubleduan/Documents/conf:/etc/nginx/conf.d -d nginx 
  • -p 代表着把容器中的80端口绑定到宿主机的80端口,所以以后访问宿主机的80端口就会转发到nginx容器的80端口
  • --name 启动的容器的名称,自己定义,方便好记就行
  • -v 就是把我主机的/Users/Doubleduan/Documents/project目录映射到容器中的/home目录中,在容器中访问/home你就会发现是我/Users/Doubleduan/Documents/project目录中的东西。我映射了项目目录和配置文件,你也可以把日志目录也映射了,这样你以后操作什么东西直接在主机中操作了,就不用登录容器中去查看了。
  • -d 后台运行容器
  • 后面的那个nginx就是镜像的名称了

启动PHP

docker run -p 9000:9000 --name myphp -v /Users/Doubleduan/Documents/project:/home -d php:7.1-fpm

配置nginx的配置文件

下面贴出我的配置

server {
    listen       80;
    server_name  algo.test.com;
    root /home/algorithm;

    access_log  /var/log/nginx/access.log  main;
    error_log /var/log/nginx/error.log error;

    location / {
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   172.17.0.3:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

这个algo.test.com我在主机的hosts文件中配置的指向127.0.0.1,其实就是访问的本机80端口。这里要特别注意两个点:

第一点:是fastcgi_pass 172.17.0.3:9000,这里的172.17.0.3就是php容器的ip,查询容器IP的方法:

docker inspect 容器ID或容器名 |grep '"IPAddress"'

你自己配置的话要替换成你自己的php容器ip,注意不能用127.0.0.1,因为我用的是docker默认的网络连接模式,也就是docker bridge模式,这种模式下你要访问另一个容器就必须用那个容器的虚拟ip,而且端口也必须要与宿主机的相应端口绑定,因为宿主机是一个网关,nginx容器访问php容器要经过宿主机的网关转发的,所以不绑定端口肯定访问不了。

第二点
关于fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name这个配置,如果你想用$document_root变量,那就必须把nginx容器的数据目录与php容器的数据目录弄成一致的,比如我的nginx容器的数据目录是/home/algorithm,在php容器中依然是这个,如果php容器中的目录改变了,不是这个了,那么php容器就会找不到请求的这个文件的。因为两个容器相当于两套文件系统,路径有可能是不一样的。但是呢,如果你偏要设置成不一样的,那么只能写死地址了,比如弄成这样:fastcgi_param SCRIPT_FILENAME /home/algorithm/$fastcgi_script_name,就可以让php容器访问到相应的文件了。

弄好配置文件之后,重启nginx容器,就可以访问了。

查看原文

赞 11 收藏 14 评论 1

Double段 关注了用户 · 2017-09-28

苏生不惑 @sushengbuhuo

同名公众号:苏生不惑

关注 1824

Double段 关注了用户 · 2017-09-28

vimac @vimac

关注 683

Double段 关注了用户 · 2017-09-28

joyqi @joyqi

我的生涯一片无悔,想起那天夕阳下的奔跑,那是我逝去的青春

关注 1328

Double段 关注了用户 · 2017-09-28

daryl @daryl

2018 年上半年要做的事情:

[] 读完《现代操作系统》
[x] 读完《数据结构与算法分析(C 语言描述)》
[] 读《UNIX 环境高级编程》
[] 读《UNIX 网络编程(卷1)》
[] 尝试完成自己的一个 PHP 框架
[] 尝试实现一个 Workman
[] 至少读完一半《C++ Primer》

关注 138

认证与成就

  • 获得 36 次点赞
  • 获得 8 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 7 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2014-04-08
个人主页被 509 人浏览