• openresty入门12 openresty php 整合


     

    利用 openresty 的 drizzle-nginx-module模块 读取数据 传递到  php后端

    利用到  openresty 的并发,无阻塞,mysql连接池,memcache|redis连接池特性  

    php 原生读取mysql数据 或者 存储在memcache|redis 的数据  

    有建立连接开销,没有连接池,php进程也是阻塞,也无法多个数据源并发读取

    激进的方案是 用 ngx_lua 替代 php 

    考虑到实际    php做为模板系统  数据读取 修改 由  openresty 接管 加上 通用缓存模块 memcache 模块 redis 模块

    性能还是可以有很多提升

     

    nginx.conf

     

     server 块同级

     

      upstream mysql

      {

                      drizzle_server 127.0.0.1:3306 dbname=wsonline password=123456 user=root   protocol=mysql;

                      drizzle_keepalive max=200 overflow=reject;

      }

     location  /api

     {

           drizzle_query "select * from twuj_ask order by id desc limit 3";

           drizzle_pass  mysql;

           rds_json on;

     }

     location  ~ .php

    {

            fastcgi_index  index.php;

            fastcgi_pass   unix:/tmp/php.sock;

            set $script      $uri;

            set $data      '';

            rewrite_by_lua '

                  local res = ngx.location.capture("/api")

                   if res.status == 200 then

                      ngx.var.data= res.body

                   end

             ';

              fastcgi_param DATA $data;

             include fcgi.conf;

    }

    php处理得到的数据

    <?php

    $data = json_decode(getenv('DATA'),true);

    print_r($data);

    ngx_lua 文档

     

    此方案有性能问题  nginx交互时有大量数据传输

  • 相关阅读:
    mac 界面以及界面浏览器等显示不全
    数组常用的方法总结
    工厂模式以及应用场景
    结构与布局-紧贴底部的页脚
    结构与布局-垂直居中
    vscode mac下终端code .快速打开工程文件
    javascript操作对象和集合(jquery 6)
    2018 Multi-University Training Contest 8
    2018 Multi-University Training Contest 8
    BZOJ 3196 二逼平衡树
  • 原文地址:https://www.cnblogs.com/ldms/p/3532692.html
Copyright © 2020-2023  润新知