zoukankan      html  css  js  c++  java
  • 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交互时有大量数据传输

  • 相关阅读:
    jsp内置对象
    Response响应
    中医不传之秘
    slam-四元运动学
    ubuntu 16.04 设置 win+e 快捷键打开文件夹管理器
    ubuntu16.04 更新nvidia 显卡驱动后显示 clean ... files ... blocks ... /sys/class/backlight/nvidia_0/actural_brightness
    android studio 引入模块失败解决方法
    gradle
    python logger
    ubuntu自定义终端风格
  • 原文地址:https://www.cnblogs.com/ldms/p/3532692.html
Copyright © 2011-2022 走看看