zoukankan      html  css  js  c++  java
  • 自定判断代码的执行环境

    web程序的开发一般经历三个环境 开发(DEBUG)测试(LAUNCHING)生产(ONLINE)

    如何来自动区分三个环境呢?

    代码一般有两种执行方式 cgi、cli

    1、对于cgi可以在web服务器中设置参数,然后在 php中用 $_SERVER 来获取

      nginx:

      apache

    php代码中判断

    if(isset($_SERVER['debug']))
    {
        define('DEBUG', true);
        echo 'DEBUG';
    }elseif(isset($_SERVER['launching'])){
        define('LAUNCHING', true);
        echo 'LAUNCHING';
    }else{
        define('ONLINE', true);
        echo 'ONLINE';
    }

    2、对于cli可以讲变量放到php.ini中,然后用 parse_ini_file 函数来解析(注:ini_get 是获取不到自定义在php.ini中的下标的

    示例:

      php.ini中

    [env]
    launching=true ;true或On(on不区分大小写)获取后都是字符串1
    debug=true
    online=true

      php代码中

    //获取加载的php文件路径
    $ini_path = php_ini_loaded_file();
    
    $ini_vars_arr = parse_ini_file($ini_path, true);
    eee($ini_vars_arr['env']);
    if(!empty($ini_vars_arr['env']['debug']))
    {
        define('DEBUG', true);
        echo 'DEBUG';
    }elseif(!empty($ini_vars_arr['env']['launching'])){
        define('LAUNCHING', true);
        echo 'LAUNCHING';
    }else{
        define('ONLINE', true);
        echo 'ONLINE';
    }

    其他方式

      思想:根据服务器的某些特征信息,如IP 等信息区分

          或者读取一个脱离框架的固定位置的文件(如 php.ini中)

  • 相关阅读:
    tcpCopy
    nc
    shell判断文件是否存在
    HDU1272 小希的迷宫(基础并查集)
    供应商信息一览
    ExtJS4 自己主动生成控制grid的列显示、隐藏的checkbox
    网络编程-UDP-TCP
    【经验】使用Profiler工具分析内存占用情况
    Struts2中Action自己主动接收參数
    iOS开发数据持久化技术02——plist介绍
  • 原文地址:https://www.cnblogs.com/siqi/p/3838773.html
Copyright © 2011-2022 走看看