Phalcon Framework 3.3.2

RedisException: No route to host

/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-db.php (296)
#0Redis->pconnect(172.16.30.71, 6379)
/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-db.php (296)
<?php
 
// * Database connection is created based in the parameters defined in the configuration file
$di->set('db', function () use ($di, $config) {
 
    $dbConnection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(
        "host" => $config->database->host,
        "username" => $config->database->username,
        "password" => $config->database->password,
        "dbname" => $config->database->db_name,
        'charset' => 'utf8',
        "options" => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            PDO::ATTR_PERSISTENT => true, #使用持久连接
//            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
//            \PDO::ATTR_AUTOCOMMIT => false,
        )
    ));
 
    // 如果是开发环境,则开启调试模式...
    if (DEV_ING) {
        $eventsManager = $di->getShared('eventsManager');
        //$eventsManager = new \Phalcon\Events\Manager();
 
        // 分析底层sql性能,并记录日志
        // [Phalcon 框架如何在model执行完毕,如何打印SQL?](https://segmentfault.com/q/1010000008456941/a-1020000008594825)
        $dbProfiler = new \Phalcon\Db\Profiler();
        $eventsManager->attach('db', function ($event, $connection) use ($dbProfiler) {
 
            # 事件类型...
            $evt = $event->getType();
 
            #lg_debug("|||||||||||||||||||||#DbProfiler@-----------[Model-:" . get_class($connection) . "][Evt: {$evt}].........................................................................");
 
            # 事件处理...
            switch ($evt) {
                case "beforeQuery":
                    // 在sql发送到数据库前启动分析
                    $sql = $connection->getSQLStatement();
                    $dbProfiler->startProfile($sql);
                    break;
                case "afterQuery":
                    // 在sql执行完毕后停止分析
                    $dbProfiler->stopProfile();
 
                    // Get the last profile in the profiler
                    $dpProfile = $dbProfiler->getLastProfile();
                    //echo "SQL Statement: ", $dpProfile->getSQLStatement(), "\n";
                    //echo "Start Time: ", $dpProfile->getInitialTime(), "\n";
                    //echo "Final Time: ", $dpProfile->getFinalTime(), "\n";
                    //echo "Total Elapsed Time: ", $dpProfile->getTotalElapsedSeconds(), "\n";
                    $sql = $dpProfile->getSQLStatement();
                    $executeTime = $dpProfile->getTotalElapsedSeconds();
 
                    #lg_debug("#DbProfiler@[sql: {$sql}][executeTime: {$executeTime}]");
                    break;
                default:
                    break;
            }
        });
 
        /* 注册监听事件 */
        $dbConnection->setEventsManager($eventsManager);
    }
 
    return $dbConnection;
});
 
// 主库
$di->setShared('dbWrite', function () use ($di, $config) {
    $dbConnection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(
        "host" => $config->w_database->host,
        "username" => $config->w_database->username,
        "password" => $config->w_database->password,
        "dbname" => $config->w_database->db_name,
        'charset' => 'utf8',
        "options" => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            PDO::ATTR_PERSISTENT => true, #使用持久连接
//            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
//            \PDO::ATTR_AUTOCOMMIT => false,
        )
    ));
 
    // 如果是开发环境,则开启调试模式...
    if (DEV_ING) {
        $eventsManager = $di->getShared('eventsManager');
        //$eventsManager = new \Phalcon\Events\Manager();
 
        // 分析底层sql性能,并记录日志
        // [Phalcon 框架如何在model执行完毕,如何打印SQL?](https://segmentfault.com/q/1010000008456941/a-1020000008594825)
        $dbProfiler = new \Phalcon\Db\Profiler();
        $eventsManager->attach('db', function ($event, $connection) use ($dbProfiler) {
 
            # 事件类型...
            $evt = $event->getType();
 
            #lg_debug("|||||||||||||||||||||#DbProfiler@-----------[Model-:" . get_class($connection) . "][Evt: {$evt}].........................................................................");
 
            # 事件处理...
            switch ($evt) {
                case "beforeQuery":
                    // 在sql发送到数据库前启动分析
                    $sql = $connection->getSQLStatement();
                    $dbProfiler->startProfile($sql);
                    break;
                case "afterQuery":
                    // 在sql执行完毕后停止分析
                    $dbProfiler->stopProfile();
 
                    // Get the last profile in the profiler
                    $dpProfile = $dbProfiler->getLastProfile();
                    //echo "SQL Statement: ", $dpProfile->getSQLStatement(), "\n";
                    //echo "Start Time: ", $dpProfile->getInitialTime(), "\n";
                    //echo "Final Time: ", $dpProfile->getFinalTime(), "\n";
                    //echo "Total Elapsed Time: ", $dpProfile->getTotalElapsedSeconds(), "\n";
                    $sql = $dpProfile->getSQLStatement();
                    $executeTime = $dpProfile->getTotalElapsedSeconds();
 
                    #lg_debug("#DbProfiler@[sql: {$sql}][executeTime: {$executeTime}]");
                    break;
                default:
                    break;
            }
        });
 
        /* 注册监听事件 */
        $dbConnection->setEventsManager($eventsManager);
    }
 
    return $dbConnection;
});
 
//  从库VIP
$di->setShared('dbRead', function () use ($di, $config) {
    $dbConnection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(
        "host" => $config->r_database->host,
        "username" => $config->r_database->username,
        "password" => $config->r_database->password,
        "dbname" => $config->r_database->db_name,
        'charset' => 'utf8',
        "options" => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            PDO::ATTR_PERSISTENT => true, #使用持久连接
//            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
//            \PDO::ATTR_AUTOCOMMIT => false,
        )
    ));
 
    // 如果是开发环境,则开启调试模式...
    if (DEV_ING) {
        $eventsManager = $di->getShared('eventsManager');
        //$eventsManager = new \Phalcon\Events\Manager();
 
        // 分析底层sql性能,并记录日志
        // [Phalcon 框架如何在model执行完毕,如何打印SQL?](https://segmentfault.com/q/1010000008456941/a-1020000008594825)
        $dbProfiler = new \Phalcon\Db\Profiler();
        $eventsManager->attach('db', function ($event, $connection) use ($dbProfiler) {
 
            # 事件类型...
            $evt = $event->getType();
 
            #lg_debug("|||||||||||||||||||||#DbProfiler@-----------[Model-:" . get_class($connection) . "][Evt: {$evt}].........................................................................");
 
            # 事件处理...
            switch ($evt) {
                case "beforeQuery":
                    // 在sql发送到数据库前启动分析
                    $sql = $connection->getSQLStatement();
                    $dbProfiler->startProfile($sql);
                    break;
                case "afterQuery":
                    // 在sql执行完毕后停止分析
                    $dbProfiler->stopProfile();
 
                    // Get the last profile in the profiler
                    $dpProfile = $dbProfiler->getLastProfile();
                    //echo "SQL Statement: ", $dpProfile->getSQLStatement(), "\n";
                    //echo "Start Time: ", $dpProfile->getInitialTime(), "\n";
                    //echo "Final Time: ", $dpProfile->getFinalTime(), "\n";
                    //echo "Total Elapsed Time: ", $dpProfile->getTotalElapsedSeconds(), "\n";
                    $sql = $dpProfile->getSQLStatement();
                    $executeTime = $dpProfile->getTotalElapsedSeconds();
 
                    #lg_debug("#DbProfiler@[sql: {$sql}][executeTime: {$executeTime}]");
                    break;
                default:
                    break;
            }
        });
 
        /* 注册监听事件 */
        $dbConnection->setEventsManager($eventsManager);
    }
 
    return $dbConnection;
});
 
// 设置模型缓存服务
// [缓存对象关系映射(Caching in the ORM)](https://docs.phalconphp.com/zh/latest/reference/models-cache.html)
// [Class \Phalcon\Cache\Backend\Redis](https://docs.phalconphp.com/zh/latest/api/Phalcon_Cache_Backend_Redis.html)
$di->set("modelsCache", function () use ($config) {
 
    // 默认缓存时间为一天
    $frontCache = new \Phalcon\Cache\Frontend\Data([
        "lifetime" => 60,
    ]);
 
    // Memcached连接配置 这里使用的是Memcache适配器
    $cache = new \Phalcon\Cache\Backend\Redis($frontCache, [
        'host' => $config->redis_cache->host,
        'port' => $config->redis_cache->port,
        'index' => $config->redis_cache->db_index,//选择的数据库 从 0 ~ 15 ,默认为 0
        'auth' => $config->redis_cache->password,//验证相关
        //"persistent" => false,
        //'statsKey' => ':MC',
        'statsKey' => '_PHCR',
        'prefix' => "_MC:" //加区分层结构
    ]);
 
    return $cache;
});
 
// 设置通用缓存服务...
$di->set("commonCache", function () use ($config) {
 
    // 默认缓存时间为一天
    $frontCache = new \Phalcon\Cache\Frontend\Data([
        "lifetime" => 60,
    ]);
 
    // Memcached连接配置 这里使用的是Memcache适配器
    $cache = new \Phalcon\Cache\Backend\Redis($frontCache, [
        'host' => $config->redis_cache->host,
        'port' => $config->redis_cache->port,
        'index' => $config->redis_cache->db_index,//选择的数据库 从 0 ~ 15 ,默认为 0
        'auth' => $config->redis_cache->password,//验证相关
        //"persistent" => false,
        //'statsKey' => ':MC',
        'statsKey' => '_PHCR',
        'prefix' => "_CC:" //加区分层结构
    ]);
 
    return $cache;
});
 
// * memcacheDB缓存
$di->set('memcacheDB', function () use ($config) {
 
    // Create a Data frontend and set a default lifetime to 1 hour
    $frontend = new \Phalcon\Cache\Frontend\Data(array(
        'lifetime' => $config->memcache_db["lifttime"]
    ));
 
    // memcacheDB 需要安装 *memcache* 扩展-当前服务器没有安装memcache扩展,不推荐使用此扩展
    //2016/05/14 10:31:56 [error] 32433#32433: *307 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Class 'memcache' not found in /data/web/yzhang/CoamServer/Home/applications/controllers/AjaxloadController.php on line 51" while reading response header from upstream, client: 58.48.206.108, server: coam.co, request: "POST /ajaxLoad/serial HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "coam.co", referrer: "https://lw.coam.co/"
 
 
    // Set up memcacheDBd and use tracking to be able to clean it later.
    // You should not use tracking if you're going to store a lot of keys!
//    $memcacheDB = new \Phalcon\Cache\Backend\memcacheDB($frontend, array(
//        //'host' => '43.241.222.110', #开启远程访问
//        'host' => '127.0.0.1', #开启远程访问
//        'port' => 11211,
//        'tracking' => true
//    ));
 
    // memcacheDB 需要安装 *memcached* 扩展-当前服务器安装memcached扩展,推荐使用此最新扩展
    // https://docs.phalconphp.com/zh/latest/api/Phalcon_Cache_Backend_Libmemcached.html
    //Create the Cache setting memcached connection options
    $memcacheDB = new \Phalcon\Cache\Backend\Libmemcached($frontend, array(
        "servers" => array(
            array(
                'host' => $config->memcache_db->host,
                'port' => $config->memcache_db->port,
                'weight' => 1
            ),
        ),
        "client" => array(
            Memcached::OPT_HASH => Memcached::HASH_MD5,
            Memcached::OPT_PREFIX_KEY => 'prefix.',
        )
    ));
 
    //print_r($memcacheDB);¨
 
    return $memcacheDB;
});
 
// * Redis Cache
$di->set('redisDB', function () use ($config) {
 
    //Connect to redis
    $redis = new Redis();
    //$redis->connect('127.0.0.1', 6379);
    $redis->pconnect($config->redis_db->host, $config->redis_db->port); #短连接
//    $redis->pconnect('103.37.147.250', 6379); #持久连接
    $redis->auth($config->redis_db->password);
    $redis->select($config->redis_db->db_index);
 
    //Create a Data frontend and set a default lifetime to 1 hour
//    $frontend = new \Phalcon\Cache\Frontend\Data(array(
//        'lifetime' => 3600
//    ));
//
//    //Create the cache passing the connection
//    $cache = new \Phalcon\Cache\Backend\Redis($frontend, array(
//        'redis' => $redis
//    ));
 
    return $redis;
});
 
// * Swoole Redis Client...
$di->set('redisSc', function () use ($config) {
    //Connect to redis
    $redisSc = new Redis();
//    $redisSc->connect('127.0.0.1', 6379);
    $redisSc->connect($config->swoole_server->listen_server_ip, $config->swoole_server->listen_server_port); #短连接
//    $redis->pconnect('103.37.147.250', 6379); #持久连接
//    $redisSc->auth("yafei312");
//    $redisSc->select(1);
 
    return $redisSc;
});
 
// * Simple database connection to localhost
$di->set("mongoSyData", function () use ($config) {
    //$mongo = new MongoClient();
//    $mongo = new MongoClient("mongodb://" . $config->server->host); // 连接到远程服务器 (使用默认端口: 27017)
    $manager = new \MongoDB\Driver\Manager("mongodb://127.0.0.1:27017"); // 连接到远程服务器 (使用默认端口: 27017)
    //$mongo = new MongoClient( "mongodb://43.241.222.110:65432" ); // 链接到远程服务器,使用自定义的端口
    ///return $mongo->selectDb("syData");
 
 
//    $mongo = new \Phalcon\Db\Adapter\MongoDB\Client("mongodb://127.0.0.1:27017");
//    return $mongo->selectDatabase('syData');
 
 
    # 使用第三方
    //$database = (new MongoDB\Client("mongodb://127.0.0.1:27017"))->selectDatabase('syData');
    //return $database;
 
 
    # 暂时借用 [phalcon/incubator](https://github.com/phalcon/incubator/tree/master/Library/Phalcon/Db/Adapter)
    $dsn = "mongodb://" . $config->mongo_db->host . ":" . $config->mongo_db->port;
    $dsn = "mongodb://{$config->mongo_db->user}:{$config->mongo_db->pwd}@" . $config->mongo_db->host . ":" . $config->mongo_db->port;
    $mongo = new \Phalcon\Db\Adapter\MongoDB\Client($dsn);
    return $mongo->selectDatabase($config->mongo_db->db_name);
 
    //$collection = new MongoDB\Collection($manager, "syData", "items");
    //$initialCollectionCount = $collection->count();
 
//return $manager;
 
    //$mongo = new \MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
    //return (new MongoDB\Client())->selectDatabase('syData');
 
}, true);
 
 
//$di->set("mongoSyData", function () use ($config) {
//    //$mongo = new MongoClient("mongodb://127.0.0.1:27017");
//    //return $mongo->selectDb("syData");
//    $mongo = new \Phalcon\Db\Adapter\MongoDB\Client("mongodb://127.0.0.1:27017");
//    return $mongo->selectDatabase('syData');
//}, true);
#1Closure->{closure}()
#2Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#3Phalcon\Di->get(redisDB, null)
#4Phalcon\Di->getShared(redisDB)
#5Phalcon\Di\Injectable->__get(redisDB)
/data/home/yzhang/WebCoam/Web/Applications/Utils/DiSecurity.php (69)
<?php
 
use Coam\App\Collections;
use Coam\App\Library;
use Coam\App\Models;
use Coam\App\Library\Zz_Api;
use \Phalcon\Events\Event,
    \Phalcon\Mvc\User\Plugin,
    \Phalcon\Mvc\Dispatcher,
    \Phalcon\Acl;
 
/**
 * Security
 * This is the security plugin which controls that users only have access to the modules they're assigned to
 */
class DiSecurity extends \Coam\App\Library\DiSecurityBase
{
    // 账户类型资源接口权限配置 [role]
    public $mpiRoleResources;
    public $wpiRoleResources;
    public $cliRoleResources;
    public $webRoleResources;
    public $logisticRoleResources;
    public $appRoleResources;
    public $openRoleResources;
    public $payRoleResources;
    public $imRoleResources;
    public $blogRoleResources;
    public $mailRoleResources;
 
    // 账户等级资源接口权限配置 [level]
    public $a_mpiLevelResources;
    public $c_mpiLevelResources;
    public $d_mpiLevelResources;
    public $p_mpiLevelResources;
    public $l_mpiLevelResources;
    public $e_mpiLevelResources;
    public $g_mpiLevelResources;
    public $_wpiLevelResources;
    public $g_wpiLevelResources;
    public $_cliLevelResources;
    public $g_cliLevelResources;
    public $_webLevelResources;
    public $g_webLevelResources;
    public $_logisticLevelResources;
    public $g_logisticLevelResources;
    public $_appLevelResources;
    public $g_appLevelResources;
    public $_openLevelResources;
    public $g_openLevelResources;
    public $_payLevelResources;
    public $g_payLevelResources;
    public $_imLevelResources;
    public $g_imLevelResources;
    public $_blogLevelResources;
    public $g_blogLevelResources;
    public $_mailLevelResources;
    public $g_mailLevelResources;
 
    public function __construct($dependencyInjector)
    {
        // 构建父类构造函数 ...
        parent::__construct($dependencyInjector);
 
        // 配置访问可跨的根域 ...
        $this->cross_dos = ['coam.co', 'lonal.com', 'nocs.cn', 'coopens.com', 'we-jy.com', 'zshui.org', 'zanshan.org', 'beecloudpay.com'];
 
        // 清除 Redis Di 缓存
        $this->redisDB->delete($this->redisDB->keys("ACL:*"));
        $this->redisDB->delete($this->redisDB->keys("CNML:*"));
    }
 
    // 加载权限等级...
    private function setWebAclResources()
    {
        // Web area resources
        $this->webRoleResources = $this->_webLevelResources = $this->g_webLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
                "loadInviteQrCode" => "*",
                "loadAccountQrCode" => "*",
            ),
            'serviceContent' => array("*" => '*'),
            'cooperationProcess' => array("*" => '*'),
            'cooperationDriver' => array("*" => '*'),
            'enterpriseSupport' => array("*" => '*'),
            'ourCustomers' => array("*" => '*'),
            'serviceWindow' => array("*" => '*'),
            'ourTeam' => array("*" => '*'),
            'joinUs' => array("*" => '*'),
            'ajaxLoad' => array("*" => '*'),
            //'openInterface' => array("*" =>'*'),
            'cloudStorage' => array("*" => "*"),
            'service' => array(
                "index" => "*", "loadAuthCodeVerifyImg" => "*", "verifyAuthCode" => "*", "getSecurityCode" => "*", "requestToken" => "*",
                "notify" => "*", "showUnSubscribe" => "*", "sendUnSubscribe" => "*",
                "checkAppUpdate" => "*",
                "establishAcrossSession" => "*",
            ),
        );
    }
 
    private function setLogisticAclResources()
    {
        // Logistic area resources
        $this->logisticRoleResources = $this->_logisticLevelResources = $this->g_logisticLevelResources = array(
            'index' => array("*" => '*'),
            'ajaxLoad' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
        );
    }
 
    private function setMpiAclResources()
    {
        // Mpi area resources
        # adminAccessLevel 代表显示级别 分别有 ["*":"开放所有访问权限"|"-":"关闭所有访问权限"|"A":"超级管理员权限"|"B":"二级管理员权限"|"C":"三级管理员权限"|"G":"访客权限"]
        $this->mpiRoleResources = array(
            'ajaxLoad' => array(
                "*" => "ACDPLG"
            ),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'cloud' => array(
                "*" => "*"
//                "createCloudFileUpToken" => "*", "uploadAppShareInfo" => "ACDPL", "sendNewGroupInfo" => "ACDPL", "uploadAInfoPicture" => "ACDPL",
//                "uploadCompanyLogo" => "ACDPL", "uploadTruckPicture" => "ACDPL",
//                "uploadOrderAssociationVoice" => "ACDPL", "uploadTruckOrderAssociationFile" => "ACDPL", "uploadPipelineOrderAssociationFile" => "ACDPL",
//                "uploadAuthIdentityCertifyInfo" => "ACDPL", "AuthCompanyCertifyInfo" => "ACDPL", "authTruckCertifyInfo" => "ACDPL",
//                "deleteOrderAttachedFile" => "ACDPL",
            ),
            //暂时关闭此项目下的访问控制
            'accountFund' => array(
//                "*" => "ACDPL",
                "*" => "*"
            ),
            'pay' => array(
//                "*" => "ACDPL",
                "*" => "*"
            ),
            //所有的请求都需要登陆
            'accountInfo' => array(
                "*" => "*"
//                "sendLoginAccount" => "*", "snsLogin" => "ACDPLG", "snsBind" => "ACDPL", "removeSNSBind" => "ACDPL", "commonAccountInfoRegister" => "ACDPLG", "commonAccountInfoModify" => "ACDPL",
//                "showAccountInfo" => "ACDPL", "changeAccountInfo" => "ACDPL", "NotifyServiceChange" => "ACDPL", "searchNotifyInfoWay" => "ACDPL", "showMessageNotifyInfo" => "ACDPL", "deleteMessageNotifyInfo" => "ACDPL",
//                "reSendVerifyAccountEmail" => "ACDPL", "RetrievePasswordSend" => "ACDPL", "showIdentityCertifyInfo" => "ACDPL", "applyIdentityCertifyInfo" => "ACDPL"
            ),
            'accountContact' => array(
                "*" => "ACDPL"
            ),
            'accountShare' => array(
                "*" => "ACDPLG"
            ),
            'accountSpace' => array(
                "*" => "*"
            ),
            'companyInfo' => array(
                "*" => "ACDPL"
            ),
            'accountCircle' => array(
                "*" => "*"
            ),
            'orderPipeline' => array(
                "*" => "ACDPL"
            ),
            'orderTruck' => array(
                "*" => "ACDPL"
            ),
            'orderSign' => array(
                "*" => "ACDPL"
            ),
            'orderTransfer' => array(
                "*" => "*"
            ),
            'orderDelivery' => array(
                "*" => "*"
            ),
            'service' => array(
                "*" => "*"
//                "checkAppUpdate" => "*", "searchExtractCooBankInfo" => "*",
//                "AppSoftwareDownload" => "ACDPLG", "appSoftwareUpdate" => "ACDPLG", "appSuggestionFeedback" => "ACDPLG", "softwareLicenseAndServicesAgreement" => "ACDPLG",
//                "sendPo" => "ACDPL", "myHistorySearchInfoList" => "ACDPL", "sendCooInfo" => "ACDPL", "cancelCooInfo" => "ACDPL",
//                "searchMyHsAreaList" => "ACDPL",
//                "searchSignTOrderFlowRouteChart" => "ACDPL",
//                "getAdvanceShareInfo" => "ACDPL",
//                "searchTruckOrderRoute" => "ACDPLG", "searchPipelineOrderRoute" => "ACDPLG", "pipelineDeliveryOrderSearch" => "ACDPL",
//                "searchAccountInfoQrCode" => "ACDPL", "searchTruckOrderQrCode" => "ACDPL", "customerSearchTruckOrderQrCode" => "ACDPL", "logisticsSearchTruckOrderQrCode" => "ACDPL",
//                "driverSearchTruckOrderQrCode" => "ACDPL", "searchPipelineOrderQrCode" => "ACDPL", "customerSearchPipelineOrderQrCode" => "ACDPL", "logisticsSearchPipelineOrderQrCode" => "ACDPL",
//                "driverSearchPipelineOrderQrCode" => "ACDPL",
//                "shareAccountInfo" => "ACDPLG", "shareSnsShareInfo" => "ACDPLG", "sharePOrderInfo" => "ACDPLG", "shareTOrderInfo" => "ACDPLG",
//                "referralFriendsPhoneTOrderInfo" => "ACDPL", "complaintsSuggestions" => "ACDPL"
            ),
            'parkInfo' => array(
                "*" => "*"
            ),
            'truckInfo' => array(
                "*" => "*"
            ),
            'agencyInfo' => array(
                "*" => "ACDPL"
            ),
            'deliveryInfo' => array(
                "*" => "ACDPL"
            ),
            'pipelineInfo' => array(
                "*" => "ACDPL"
            ),
        );
 
        $this->a_mpiLevelResources = $this->c_mpiLevelResources = $this->d_mpiLevelResources = $this->p_mpiLevelResources = $this->l_mpiLevelResources = $this->e_mpiLevelResources = $this->g_mpiLevelResources = array(
            'ajaxLoad' => array(
                "*" => "*"
            ),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'cloud' => array(
                "*" => "*"
//                "createCloudFileUpToken" => "*", "uploadAppShareInfo" => "*", "sendNewGroupInfo" => "*", "uploadAInfoPicture" => "*",
//                "uploadCompanyLogo" => "*", "uploadTruckPicture" => "*",
//                "uploadOrderAssociationVoice" => "*", "uploadTruckOrderAssociationFile" => "*", "uploadPipelineOrderAssociationFile" => "*",
//                "uploadAuthIdentityCertifyInfo" => "*", "uploadAuthCompanyCertifyInfo" => "*", "uploadAuthTruckCertifyInfo" => "*",
//                "deleteOrderAttachedFile" => "*",
            ),
            //暂时关闭此项目下的访问控制
            'accountFund' => array(
                "*" => "*"
            ),
            'pay' => array(
                "*" => "*"
            ),
            //所有的请求都需要登陆
            'accountInfo' => array(
                "*" => "*"
//                "sendLoginAccount" => "*", "snsLogin" => "*", "snsBind" => "*", "removeSNSBind" => "*", "commonAccountInfoRegister" => "*", "commonAccountInfoModify" => "*",
//                "showAccountInfo" => "*", "changeAccountInfo" => "*", "NotifyServiceChange" => "*", "searchNotifyInfoWay" => "*", "showMessageNotifyInfo" => "*", "deleteMessageNotifyInfo" => "*",
//                "reSendVerifyAccountEmail" => "*", "RetrievePasswordSend" => "*", "showIdentityCertifyInfo" => "*", "applyIdentityCertifyInfo" => "*"
            ),
            'accountContact' => array(
                "*" => "*"
            ),
            'accountShare' => array(
                "*" => "*"
            ),
            'accountSpace' => array(
                "*" => "*"
            ),
            'companyInfo' => array(
                "*" => "*"
            ),
            'accountCircle' => array(
                "*" => "*"
            ),
            'orderPipeline' => array(
                "*" => "*"
            ),
            'orderTruck' => array(
                "*" => "*"
            ),
            'orderSign' => array(
                "*" => "*"
            ),
            'orderTransfer' => array(
                "*" => "*"
            ),
            'orderDelivery' => array(
                "*" => "*"
            ),
            'service' => array(
                "*" => "*"
//                "checkAppUpdate" => "*", "searchExtractCooBankInfo" => "*",
//                "appSoftwareDownload" => "*", "appSoftwareUpdate" => "*", "appSuggestionFeedback" => "*", "softwareLicenseAndServicesAgreement" => "*",
//                "sendPo" => "*", "myHistorySearchInfoList" => "*", "sendCooInfo" => "*", "cancelCooInfo" => "*",
//                "searchMyHsAreaList" => "ACDPL",
//                "searchSignTOrderFlowRouteChart" => "ACDPL",
//                "getAdvanceShareInfo" => "*",
//                "searchTruckOrderRoute" => "*", "searchPipelineOrderRoute" => "*", "pipelineDeliveryOrderSearch" => "*",
//                "searchAccountInfoQrCode" => "*", "searchTruckOrderQrCode" => "*", "customerSearchTruckOrderQrCode" => "*", "logisticsSearchTruckOrderQrCode" => "*",
//                "driverSearchTruckOrderQrCode" => "*", "searchPipelineOrderQrCode" => "*", "customerSearchPipelineOrderQrCode" => "*", "logisticsSearchPipelineOrderQrCode" => "*",
//                "driverSearchPipelineOrderQrCode" => "*",
//                "shareAccountInfo" => "*", "shareSnsShareInfo" => "*", "sharePOrderInfo" => "*", "shareTOrderInfo" => "*",
//                "referralFriendsPhoneTOrderInfo" => "*", "complaintsSuggestions" => "*"
            ),
            'parkInfo' => array(
                "*" => "*"
            ),
            'truckInfo' => array(
                "*" => "*"
            ),
            'agencyInfo' => array(
                "*" => "*"
            ),
            'deliveryInfo' => array(
                "*" => "*"
            ),
            'pipelineInfo' => array(
                "*" => "*"
            ),
        );
    }
 
    private function setWpiAclResources()
    {
        // Wpi area resources
        $this->wpiRoleResources = $this->_wpiLevelResources = $this->g_wpiLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
        );
    }
 
    private function setCliAclResources()
    {
        // Cli area resources
        $this->cliRoleResources = $this->_cliLevelResources = $this->g_cliLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
        );
    }
 
    private function setOpenAclResources()
    {
        // Open area resources
        $this->openRoleResources = $this->_openLevelResources = $this->g_openLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'ajaxLoad' => array("*" => '*'),
            'open' => array("*" => '*'),
            'qqInterface' => array("*" => '*'),
            'wcInterface' => array("*" => '*'),
            'wbInterface' => array("*" => '*'),
        );
    }
 
    private function setPayAclResources()
    {
        // Pay area resources
        $this->payRoleResources = $this->_payLevelResources = $this->g_payLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'ajaxLoad' => array("*" => '*'),
            'aliPay' => array("*" => '*'),
            'bfbPay' => array("*" => '*'),
            'payWay' => array("*" => '*'),
            'pingPay' => array("*" => '*'),
            'temPay' => array("*" => '*'),
            'zsPay' => array("*" => '*'),
            'wcPay' => array("*" => '*'),
        );
    }
 
    private function setAppAclResources()
    {
        // App area resources
        $this->appRoleResources = $this->_appLevelResources = $this->g_appLevelResources = array(
            'index' => array("*" => '*'),
            'ajaxLoad' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
        );
    }
 
    private function setImAclResources()
    {
        // Im area resources
        $this->imRoleResources = $this->_imLevelResources = $this->g_imLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'ajaxLoad' => array("*" => '*'),
        );
    }
 
    private function setBlogAclResources()
    {
        // Blog area resources
        $this->blogRoleResources = $this->_blogLevelResources = $this->g_blogLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'ajaxLoad' => array("*" => '*'),
        );
    }
 
    private function setMailAclResources()
    {
        // Mail area resources
        $this->mailRoleResources = $this->_mailLevelResources = $this->g_mailLevelResources = array(
            'index' => array("*" => '*'),
            'common' => array(
                "index" => "*",
                "error" => "*",
                "sync" => "*",
            ),
            'ajaxLoad' => array("*" => '*'),
        );
    }
 
    public function loadCommonAclResources()
    {
        // 账号等级权限
        $as = explode("-", $this->acAsId)[0];
        //$asLevel = $this->acAsLevel;
        switch ($this->module) {
            case "web":
                // 加载权限等级...
                $this->setWebAclResources();
 
                $this->cMcaRoleResources = $this->webRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_webLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_webLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "logistic":
                // 加载权限等级...
                $this->setLogisticAclResources();
 
                $this->cMcaRoleResources = $this->logisticRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_logisticLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_logisticLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "mpi":
                // 加载权限等级...
                $this->setMpiAclResources();
 
                $this->cMcaRoleResources = $this->mpiRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                        $this->cMcaLevelResources = $this->a_mpiLevelResources;
                        break;
                    case "C":
                        $this->cMcaLevelResources = $this->c_mpiLevelResources;
                        break;
                    case "D":
                        $this->cMcaLevelResources = $this->d_mpiLevelResources;
                        break;
                    case "P":
                        $this->cMcaLevelResources = $this->p_mpiLevelResources;
                        break;
                    case "L":
                        $this->cMcaLevelResources = $this->l_mpiLevelResources;
                        break;
                    case "E":
                        $this->cMcaLevelResources = $this->e_mpiLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_mpiLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "wpi":
                // 加载权限等级...
                $this->setWpiAclResources();
 
                $this->cMcaRoleResources = $this->wpiRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_wpiLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_wpiLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "cli":
                // 加载权限等级...
                $this->setCliAclResources();
 
                $this->cMcaRoleResources = $this->cliRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_cliLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_cliLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "open":
                // 加载权限等级...
                $this->setOpenAclResources();
 
                $this->cMcaRoleResources = $this->openRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_openLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_openLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "pay":
                // 加载权限等级...
                $this->setPayAclResources();
 
                $this->cMcaRoleResources = $this->payRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_payLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_payLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "app":
                // 加载权限等级...
                $this->setAppAclResources();
 
                $this->cMcaRoleResources = $this->appRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_appLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_appLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "im":
                // 加载权限等级...
                $this->setImAclResources();
 
                $this->cMcaRoleResources = $this->imRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_imLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_imLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "blog":
                // 加载权限等级...
                $this->setBlogAclResources();
 
                $this->cMcaRoleResources = $this->blogRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_blogLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_blogLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            case "mail":
                // 加载权限等级...
                $this->setMailAclResources();
 
                $this->cMcaRoleResources = $this->mailRoleResources;
                // 过滤账户权限等级...
                switch ($as) {
                    case "A":
                    case "C":
                    case "D":
                    case "P":
                    case "L":
                    case "E":
                        $this->cMcaLevelResources = $this->_mailLevelResources;
                        break;
                    case "G":
                        // TODO...
                        $this->cMcaLevelResources = $this->g_mailLevelResources;
                        break;
                    default:
                        Zz_Api::io(40004, "unknown [$ module: {$this->module}] [$ as: $as]...");
                        break;
                }
                break;
            default:
                exit("unknown [$ module: {$this->module}]...");
                break;
        }
 
        // 加载 [Role|Level] Acl...
        parent::loadRoleAcl();
        parent::loadLevelAcl();
    }
 
    /**
     * This action is executed before execute any action in the application
     * 先于 beforeDispatch 触发
     */
    public function beforeDispatch(Event $event, Dispatcher $dispatcher)
    {
        lg_info("... [" . $_SERVER["REQUEST_URI"] . "]  .............................................................................................POST...");
        lg_debug("$ _SERVER:");
        lg_debug($_SERVER);
        lg_info("$ _POST:");
        lg_info($_POST);
        lg_info("$ _GET:");
        lg_info($_GET);
        lg_info("$ sAccountInfo:");
        $sAccountInfo = $this->session->get('sAccountInfo');
        lg_info($sAccountInfo);
        lg_info("$ disAccountInfo:");
        lg_info($this->disAccountInfo);
        lg_debug(".End............................................");
 
        //首先使用参数 $dispatcher 初始化
        $this->module = $this->router->getModuleName();
        $this->controller = $dispatcher->getControllerName();
        $this->action = $dispatcher->getActionName();
        $this->requestPathInterface = $this->module . '/' . $this->controller . '/' . $this->action;
 
        // 配置授权 module ...
        $this->atModuleList = ["app", "blog", "cli", "im", "logistic", "ma", "mail", "mpi", "open", "pay", "web", "wpi"];
        //允许公开不校验的接口
        $this->unTokenRequestPathList = [
            # [web-service]
            'web/service/loadAuthCodeVerifyImg',
            'web/service/requestToken',
            'web/service/verifyAuthCode',
            # [web-common]
            'web/common/loadInviteQrCode',
 
            # [mpi-pay]
            'mpi/pay/updatePayState',
            'mpi/pay/mPayInfo',
            'mpi/pay/pingPayCallFun',
            # [mpi-account]
            # [mpi-ajax]
            #'mpi/ajax/runAreaInfo',
            # [mpi-cloud]
            'mpi/cloud/_createCloudFileUpToken',
            //'mpi/cloud/uploadAInfoPicture',
            //'mpi/cloud/uploadTruckOrderAssociationFile',
            # [mpi-service]
            'mpi/service/checkAppUpdate',
 
            # [pay-payWay]
            'pay/payWay/pingPayCall',
            'pay/payWay/opPayCall',
            'pay/payWay/updatePayState',
 
            # [open-open]
            'open/open/curl',
 
            # [open-qqInterface]
            'open/qqInterface/webAuthConnect',
            'open/qqInterface/interface',
            'open/wbInterface/webAuthConnect',
            'open/wbInterface/interface',
            'open/wcInterface/webAuthConnect',
            'open/wcInterface/interface',
        ];
        $this->onTokenRequestPathList = ["*"];
 
        // 接口访问控制...
        $accessRiInfo = $this->accessRequestInterface();
        $fo_info = $accessRiInfo->fo_info;
        $fo_data = $accessRiInfo->fo_data;
        if (!$fo_info->result) {
            // 返回错误跨域响应头...
            $this->responseStatusCorsHeader($fo_data->sc, $fo_data->st, $fo_data->ss);
            return false;
        }
 
        //@ 可随时关闭 token 安全校验...
        // 加载接口授权认证...
        $authRi = $this->authRequestInterface();
        $fo_info = $authRi->fo_info;
        $fo_data = $authRi->fo_data;
        if (!$fo_info->result) {
            // 返回错误跨域响应头...
            $this->responseStatusCorsHeader($fo_data->sc, $fo_data->st, $fo_data->ss);
            return false;
        }
 
        // 如果没有缓存配置,则创建判断权限,检索缓存...
        $this->authRequestInterfaceSession();
 
        // 加载[Role|Level]访问角色等级...
        $this->loadAclRls();
 
        // 加载[Role|Level]访问控制...
        $this->loadCommonAclResources();
 
        // 判断接口访问控制权限...
        $this->aclAllowed = $this->mcaAclAllowed($this->module, $this->controller, $this->action);
 
        // 调用基类验证方法 ...
        return parent::beforeDispatch($event, $dispatcher);
    }
 
    /**
     * This action is executed before execute any action in the application
     * 在执行控制器/动作方法前触发.此时,调度器已经初始化了控制器并知道动作是否存在.
     */
    public function beforeExecuteRoute(Event $event, Dispatcher $dispatcher)
    {
        $requestClientPlatformPlatform = $this->request->getHeader("HTTP_REQUEST_CLIENT_PLATFORM");//软件运行平台 Desktop|Android|IOS|Web
 
        //访问控制
        if ($this->aclAllowed != Acl::ALLOW) {
            // 输出权限验证调试结果...
            Zz_Api::io(40887, "", [
                "role" => $this->role,
                "controller" => $this->controller,
                "action" => $this->action,
                "aclAllowed" => $this->aclAllowed,
                "requestPathInterface" => $this->requestPathInterface,
                "cMcaRoleResources" => $this->cMcaRoleResources,
                "cMcaLevelResources" => $this->cMcaLevelResources,
            ]);
 
            //如果请求对象是桌面客户端
            if ($requestClientPlatformPlatform == "NodeDesktopClients") {
                $this->response->setHeader("AuthLoginWay", "CoamCustomerPlatformAuth");
                //Set status code
                $this->response->setStatusCode(401, "UnAuthorization");
                //Send response to the client
                $this->response->send();
            }
//            else {
//                $this->flash->error("抱歉,您暂时没有该模板的访问权限,请重新登陆-!");
//                $dispatcher->forward(
//                    array(
//                        'controller' => 'index',
//                        'action' => 'index'
//                    )
//                );
//                return true;
//            }
 
            // 跳到登录界面
            switch ($this->module) {
                case "cli":
                    $dispatcher->forward(array(
//                'namespace'  => 'Multiple\Api\Controllers',
                        "module" => $this->module,
                        'controller' => 'common',
                        'action' => 'error'
                    ));
                    break;
                case "mpi":
                    $dispatcher->forward(array(
//                'namespace'  => 'Multiple\Api\Controllers',
                        "module" => $this->module,
                        'controller' => 'common',
                        'action' => 'error'
                    ));
                    break;
                case "wpi":
                    $dispatcher->forward(array(
//                'namespace'  => 'Multiple\Api\Controllers',
                        "module" => $this->module,
                        'controller' => 'common',
                        'action' => 'error'
                    ));
                    break;
                case "web":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "logistic":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "app":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "mail":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "open":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "pay":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                case "im":
                    $this->flash->error("[{$this->module}]抱歉,您暂时没有该模板的访问权限,请重新登陆!");
                    $dispatcher->forward(
                        array(
                            "module" => $this->module,
                            'controller' => 'index',
                            'action' => 'index'
                        )
                    );
                    break;
                default:
                    break;
            }
 
            return false;
        } else {
            //如果是访问需要授权的页面,则进一步检查Token
            if ($this->role != "Customer" || $this->role == "Customer" /*&& $sAccountInfo["Token"] == $RequestAccessToken*/) {
                //如果请求对象是桌面客户端
                if ($requestClientPlatformPlatform == "NodeDesktopClients") {
                    $this->view->setVar("LoadWay", "NodeWebkit");
                    $this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_AFTER_TEMPLATE);
                } else {
                    $this->view->setVar("LoadWay", "WebBrowser");
                }
            } else {
                return false;
            }
        }
    }
 
    // 根据管理员权限递归检测过滤页面展示菜单
    public function af_conNavMenuLevel(&$s_menu, $i_key, &$i_menu, $s_level = "I")
    {
        $iPath = $i_menu["path"];
        // 去除首空字符并重建数组索引
        //list($m, $c, $a) = array_values(array_filter(explode("/", $iPath)));
        list($c, $a) = array_values(array_filter(explode("/", $iPath)));
        // 检测规则权限
        //$acl = $this->getAcl();
        //$allowed = $acl->isAllowed($this->role, $c, $a);
        $allowed = $this->mcaAclAllowed($this->module, $c, $a);
        $i_menu["allowed"] = $allowed;
 
        $ss_level = $s_level . "I";
        $_mLoopMenu = $ss_level . "_MenuList";
        if ($allowed && count($i_menu[$_mLoopMenu]) > 0) {
            foreach ($i_menu[$_mLoopMenu] as $ii_key => &$ii_value) {
                $ss_menu = &$s_menu[$i_key][$_mLoopMenu];
                $this->af_conNavMenuLevel($ss_menu, $ii_key, $ii_value, $ss_level);
            }
        }
 
        // 过滤掉不允许出现的菜单
        if (!$allowed) unset($s_menu[$i_key]);
    }
}
#6DiSecurity->__construct(Object(Phalcon\Di\FactoryDefault))
/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-web.php (7)
<?php
 
//use \BrowscapPHP\Browscap;
 
// * Loading routes from the routes.php file
$di->set('dis', function () use ($di) {
    $diSecurity = new DiSecurity($di);
    return $diSecurity;
});
 
// * We register the events manager
$di->setShared('dispatcher', function () use ($di) {
 
    $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
//    $security = new Security($di);
    $diSecurity = $di->getShared('dis');
//    // We listen for events in the dispatcher using the Security plugin
    $eventsManager = $di->getShared('eventsManager');
    $eventsManager->attach('dispatch', $diSecurity);
    $dispatcher->setEventsManager($eventsManager);
 
//    $dispatcher->setDefaultNamespace("Multiple\\Admin\\Controllers");
 
//    $dispatcher->setDefaultNamespace(
//        "Single\\admin\\controllers"
//    );
 
    return $dispatcher;
});
 
// * Loading routes from the routes.php file
$di->set('router', function () {
    return require_once COMMON_WEB_APP_DIR . '/Common/routes.php';
});
 
// * The URL component is used to generate all kind of urls in the application
$di->set('url', function () use ($config) {
    $url = new \Phalcon\Mvc\Url();
    $url->setBaseUri($config->application->baseUri);
    return $url;
});
 
// * Register the flash service with custom CSS classes
//$di->set('browsCap', function () {
//    require_once(WEB_APP_DIR . '/plugins/BrowsCap/vendor/autoload.php');
//
//    //$cacheDir = BASE_DIR."/applications/plugins/BrowsCap/cache";
//    $browscap = new Browscap();
//    //$browscap->doAutoUpdate = false;
//    //$info = $browscap->getBrowser();
//    //$browscap->update(\BrowscapPHP\Helper\IniLoader::PHP_INI_FULL);//
//
//    return $browscap;
//});
 
// * Register the flash service with custom CSS classes
$di->set('mDetect', function () {
    //require_once(WEB_APP_DIR . '/plugins/MobileDetect/Mobile_Detect.php');
 
    $mDetect = new Mobile_Detect;
 
    //$deviceType = ($mDetect->isMobile() ? ($mDetect->isTablet() ? 'tablet' : 'phone') : 'computer');
    //Zz_Api::io(40002, "-", ["deviceType" => $deviceType]);
 
    return $mDetect;
});
#7Closure->{closure}()
#8Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#9Phalcon\Di->get(dis, null)
#10Phalcon\Di->getShared(dis)
/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-web.php (17)
<?php
 
//use \BrowscapPHP\Browscap;
 
// * Loading routes from the routes.php file
$di->set('dis', function () use ($di) {
    $diSecurity = new DiSecurity($di);
    return $diSecurity;
});
 
// * We register the events manager
$di->setShared('dispatcher', function () use ($di) {
 
    $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
//    $security = new Security($di);
    $diSecurity = $di->getShared('dis');
//    // We listen for events in the dispatcher using the Security plugin
    $eventsManager = $di->getShared('eventsManager');
    $eventsManager->attach('dispatch', $diSecurity);
    $dispatcher->setEventsManager($eventsManager);
 
//    $dispatcher->setDefaultNamespace("Multiple\\Admin\\Controllers");
 
//    $dispatcher->setDefaultNamespace(
//        "Single\\admin\\controllers"
//    );
 
    return $dispatcher;
});
 
// * Loading routes from the routes.php file
$di->set('router', function () {
    return require_once COMMON_WEB_APP_DIR . '/Common/routes.php';
});
 
// * The URL component is used to generate all kind of urls in the application
$di->set('url', function () use ($config) {
    $url = new \Phalcon\Mvc\Url();
    $url->setBaseUri($config->application->baseUri);
    return $url;
});
 
// * Register the flash service with custom CSS classes
//$di->set('browsCap', function () {
//    require_once(WEB_APP_DIR . '/plugins/BrowsCap/vendor/autoload.php');
//
//    //$cacheDir = BASE_DIR."/applications/plugins/BrowsCap/cache";
//    $browscap = new Browscap();
//    //$browscap->doAutoUpdate = false;
//    //$info = $browscap->getBrowser();
//    //$browscap->update(\BrowscapPHP\Helper\IniLoader::PHP_INI_FULL);//
//
//    return $browscap;
//});
 
// * Register the flash service with custom CSS classes
$di->set('mDetect', function () {
    //require_once(WEB_APP_DIR . '/plugins/MobileDetect/Mobile_Detect.php');
 
    $mDetect = new Mobile_Detect;
 
    //$deviceType = ($mDetect->isMobile() ? ($mDetect->isTablet() ? 'tablet' : 'phone') : 'computer');
    //Zz_Api::io(40002, "-", ["deviceType" => $deviceType]);
 
    return $mDetect;
});
#11Closure->{closure}()
#12Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#13Phalcon\Di->get(dispatcher, null)
#14Phalcon\Di->getShared(dispatcher)
/data/home/yzhang/WebCoam/Web/Applications/Utils/ModuleBase.php (41)
<?php
 
use Coam;
use Coam\App\Collections;
use Coam\App\Library;
use Coam\App\Models;
use Coam\App\Library\Zz_Api;
use \Phalcon\DiInterface;
use \Phalcon\Loader;
use \Phalcon\Mvc\View;
use \Phalcon\Mvc\ModuleDefinitionInterface;
 
class ModuleBase implements ModuleDefinitionInterface
{
    // 当期路由加载的模块...
    protected $load_module = null; // Admin
    protected $load_module_ns = null; // Multiple\Admin\Controllers
 
    // 配置[电脑/平板/手机]-适配视图
    protected $pc_view;
    protected $tablet_view;
    protected $mobile_view;
 
    /**
     * Registers an autoloader related to the module
     * @param DiInterface $di
     */
    public function registerAutoloaders(DiInterface $di = null)
    {
        // 首字母大写
        $this->load_module = ucfirst(RUN_SERVER_MODULE);
        $this->load_module_ns = 'Coam\\App\\Multiple\\' . $this->load_module . '\\Controllers';
 
        $loader = $di->getShared("loader");
 
        $loader->registerNamespaces(array(
            //'Phalcon' => COMMON_WEB_BASE_DIR . '/vendor/phalcon/incubator/Library/Phalcon/',
            $this->load_module_ns => WEB_APP_DIR . '/Multiple/' . ucfirst(RUN_SERVER_MODULE) . '/Controllers/',
        ))->register();
 
        $di->getShared("dispatcher")->setDefaultNamespace($this->load_module_ns);
    }
 
    /**
     * Registers services related to the module
     * @param DiInterface $di
     */
    public function registerServices(DiInterface $di)
    {
        // 根据当前访问的客户端自动适配不同的视图 view
        $mDetect = $di->getShared("mDetect");
        $web_view = null;
        if ($mDetect->isMobile()) {
            // 移动客户端
            $web_view = $this->mobile_view;
        } else if ($mDetect->isTablet()) {
            // 移动客户端
            $web_view = $this->tablet_view;
        } else {
            // PC 桌面浏览器
            $web_view = $this->pc_view;
        }
 
        // Registering the view component
        $di->set("view", function () use ($di, $web_view) {
            $view = new View();
 
//            $view->setViewsDir(WEB_APP_DIR . '/Multiple/' . RUN_SERVER_MODULE . '/views/');
            $view->setViewsDir(WEB_APP_DIR . '/Multiple/' . ucfirst(RUN_SERVER_MODULE) . '/' . $web_view . '/');
 
            $view->registerEngines(array(
                ".volt" => 'volt'
            ));
 
            //重新定义 Volt 全局引用变量
            $view->setVar("HostServer", HostServer);
            $view->setVar("AccessHostServer", AccessHostServer);
            $view->setVar("WsaHostServer", WsaHostServer);
            $view->setVar("MainServer", MainServer);
            $view->setVar("AccessMainServer", AccessMainServer);
            $view->setVar("WsaMainServer", WsaMainServer);
 
            // 云存储服务 ...
            $view->setVar("WsaMirrorSpace", WsaMirrorSpace);
            $view->setVar("WebMirrorSpace", WebMirrorSpace);
            $view->setVar("WamMirrorSpace", WamMirrorSpace);
            $view->setVar("WebCloudSpace", WebCloudSpace);
 
            // 通用网站全局展示配置信息
            $view->setVar("ConCompanyName", ConCompanyName);
            $view->setVar("ConCompanyTag", ConCompanyTag);
            $view->setVar("ConCompanySTag", ConCompanySTag);
 
            $eventsManager = $di->getShared("eventsManager");
 
            //监听视图渲染事件,其它事件{beforeRenderView}一次请求可能会触发多次
            $eventsManager->attach('view:beforeRender', function ($event, $view) use ($di) {
                lg_debug("Process view:beforeRender.....................................................");
 
                //设定搜索引擎不抓取指定域名的内容,防止分散权重
                $metaRobots = "all";
                //设定 meta 让搜索引擎不怕取测试页面
                if (in_array(HostServer, ['lonal.com', 'coopens.com', 'nocs.cn'])) {
                    $metaRobots = "noindex,nofollow";
                }
                $view->setVar("MetaRobots", $metaRobots);
                ////////////////////////////////////////////////////////////////////////////////////////////
 
                //lg_debug($view->getParamsToView()); // 'test_value' here OK
                //$ViewRenderLevel = $view->getRenderLevel();
 
                #1# LEVEL_MAIN_LAYOUT
                #2# LEVEL_AFTER_TEMPLATE
                #3# LEVEL_LAYOUT
                #4# LEVEL_BEFORE_TEMPLATE
                #5# LEVEL_ACTION_VIEW
                #6# LEVEL_NO_RENDER
                #7# CACHE_MODE_NONE
                #8# CACHE_MODE_INVERSE
 
                //判断是否已开启SESSION -- 这里实测已开启SessionInfo
                //从缓存获取浏览器信息 -- 由于每次请求,获取的浏览器信息都是一样的,然而获取浏览器接口特别耗用CPU性能,所以这里特别开启浏览器检测缓存
                // getShared 和 get 都返回当前已被实例化的 setShared ("session",function(){}) 实例,避免重复初始化 造成 {ini_set(): A session is active} 错误
//                $browserRenderInfo = $di->getShared("session")->get('browserRenderInfo');
//                if (!$browserRenderInfo) {
//                    //$BrowserInfo = @get_browser(null, true);
//                    //使用 https://github.com/browscap/browscap-php 代替 php.ini 提升速度
//                    $browserInfo = $di->get("browsCap")->getBrowser();
//
//                    //输出数组变量到视图
//                    $browserRenderInfo = \ManagerTools::browserRenderInfo($browserInfo);
//
//                    $di->getShared("session")->set('browserRenderInfo', $browserRenderInfo);
//                }
//
//                //向Browns Version 传值
//                $view->setVar("browserRenderInfo", $browserRenderInfo);
            });
 
            //Bind the eventsManager to the view component
            $view->setEventsManager($eventsManager);
 
            return $view;
        });
    }
}
#15ModuleBase->registerAutoloaders(Object(Phalcon\Di\FactoryDefault))
/data/home/yzhang/WebCoam/Web/Applications/Multiple/Web/Module.php (27)
<?php
namespace Coam\App\Multiple\Web;
 
use \Phalcon\DiInterface;
 
use \Phalcon\Loader;
 
use \Phalcon\Mvc\View;
 
use \Phalcon\Mvc\ModuleDefinitionInterface;
 
class Module extends \ModuleBase
{
 
    /**
     * Registers an autoloader related to the module
     * @param DiInterface $di
     */
    public function registerAutoloaders(DiInterface $di = null)
    {
        // 配置设备视图适配器
        $this->pc_view = "pc_views";
        $this->tablet_view = "pc_views";
        $this->mobile_view = "pc_views";
 
        // 执行父类通用函数
        parent::registerAutoloaders($di);
    }
 
}
#16Coam\App\Multiple\Web\Module->registerAutoloaders(Object(Phalcon\Di\FactoryDefault))
#17Phalcon\Mvc\Application->handle()
/data/home/yzhang/WebCoam/Web/public/index.php (188)
<?php
 
# 获取定义用户 web 根目录 [/data/home/yzhang]
//define('HOME_DIR', dirname(__DIR__) . "/../../../..");
define('HOME_DIR', "/data/home/yzhang");
 
// 切换开发测试环境
define('ENV', 'dev');
 
// 开启 xhprof 性能分析...
define('DEBUG_ENV', false);
 
if (!defined('ENV')) {
    error_log('Error: The application ENV constant is not set.');
    exit(1);
}
 
// 开发测试环境配置
define('DEV_ENV', 'dev');
define('TEST_ENV', 'test');
define('UPGRADE_ENV', 'upgrade');
define('DIST_ENV', 'dist');
define('DEV_ING', ENV === DEV_ENV);
define('TEST_ING', ENV === TEST_ENV);
define('UPGRADE_ING', ENV === UPGRADE_ENV);
define('DIST_ING', ENV === DIST_ENV);
 
/*
 * Environment setup
 * Different environments will require different levels of error reporting.
*/
switch (ENV) {
    case DEV_ENV:
        // 关闭支付测试环境...
        // define('DEV_PAY_ENV', false);
        if (isset($_POST["sign"]))
            define('DEV_PAY_ENV', false);
        else
            // 是否开启开发支付测试环境
            define('DEV_PAY_ENV', false);
 
        //error_reporting(E_ALL);
        //ini_set("display_errors", 1);
        (new \Phalcon\Debug)->listen();
        break;
    case TEST_ENV:
        // 关闭支付测试环境...
        // define('DEV_PAY_ENV', false);
        if (isset($_POST["sign"]))
            define('DEV_PAY_ENV', false);
        else
            // 是否开启开发支付测试环境
            define('DEV_PAY_ENV', false);
 
        //ini_set("display_errors", 0);
        //ini_set("log_errors", 1);
        //error_reporting(E_ALL);
        break;
    case UPGRADE_ENV:
        // 开启支付测试环境...
        define('DEV_PAY_ENV', false);
 
        //ini_set("display_errors", 0);
        //ini_set("log_errors", 1);
        //error_reporting(E_ALL);
        break;
    case DIST_ENV:
        // 开启支付测试环境...
        define('DEV_PAY_ENV', false);
 
        //ini_set("display_errors", 0);
        //ini_set("log_errors", 1);
        //error_reporting(E_ALL);
        break;
    default:
        error_log('Error: The application ENV constant is not set correctly.');
        exit(1);
}
 
// 开启 xhprof 性能分析...
if (DEBUG_ENV) xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 
try {
 
    # 获取当前网站的根目录
    if (!defined('WEB_BASE_DIR')) define('WEB_BASE_DIR', dirname(__DIR__));
    if (!defined('WEB_APP_DIR')) define('WEB_APP_DIR', dirname(__DIR__) . '/Applications');
 
    // 加载主配置文件...
    include_once WEB_APP_DIR . '/Common/Config/config_common.php';
 
 
    // pay.coam.co
    //aliPay
    //require_once(APP_DIR."/plugins/Pay/ali/ali.config.php");
    //$aliPayConfig = include APP_DIR."/plugins/Pay/ali/ali.config.php";
    require_once(WEB_APP_DIR . "/Plugins/Pay/aliPay/lib/alipay_submit.class.php");
    require_once(WEB_APP_DIR . "/Plugins/Pay/aliPay/lib/alipay_notify.class.php");
 
//    //tenPay
//    require_once(WEB_APP_DIR . "/plugins/Pay/tenPay/InstantAccount/classes/RequestHandler.class.php");
//    //---------------------------------------------------------
//    //财付通即时到帐支付后台回调示例,商户按照此文档进行开发即可
//    //---------------------------------------------------------
//    require(WEB_APP_DIR . "/plugins/Pay/tenPay/InstantAccount/classes/ResponseHandler.class.php");
//    //require (COMMON_APP_DIR."/plugins/Pay/tenPay/InstantAccount/classes/RequestHandler.class.php");
//    require(WEB_APP_DIR . "/plugins/Pay/tenPay/InstantAccount/classes/client/ClientResponseHandler.class.php");
//    require(WEB_APP_DIR . "/plugins/Pay/tenPay/InstantAccount/classes/client/TenpayHttpClient.class.php");
 
 
    // *** Read auto-loader˜
    include_once WEB_APP_DIR . '/Common/loader.php';
 
    // *** Read auto-logger
    include_once WEB_APP_DIR . '/Common/logger.php';
 
    // 设置默认控制器工厂函数
    $di = new \Phalcon\DI\FactoryDefault();
 
    // *** setting di services
    include_once WEB_APP_DIR . '/Common/di-services-base.php';
    include_once WEB_APP_DIR . '/Common/di-services-common.php';
    include_once WEB_APP_DIR . '/Common/di-services-db.php';
    include_once WEB_APP_DIR . '/Common/di-services-web.php';
 
    //$application = new \Phalcon\Mvc\Application();
    //$application->setDI($di);
 
    $application = new \Phalcon\Mvc\Application($di);
    //Phalcon--debugbar第三方调试-打开500错误
 
//    $di['app'] = $application; //  Important
////    $di->set('app', $application);
//    (new Snowair\Debugbar\ServiceProvider())->start();
 
    // after start the debugbar, you can do noting but handle your app right now.
 
    // 注册模块
    $application->registerModules(
        [
            "cli" => [
                "className" => "Coam\\App\\Multiple\\Cli\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Cli/Module.php",
            ],
            "mpi" => [
                "className" => "Coam\\App\\Multiple\\Mpi\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Mpi/Module.php",
            ],
            "wpi" => [
                "className" => "Coam\\App\\Multiple\\Wpi\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Wpi/Module.php",
            ],
            "web" => [
                "className" => "Coam\\App\\Multiple\\Web\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Web/Module.php",
            ],
            "logistic" => [
                "className" => "Coam\\App\\Multiple\\Logistic\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Logistic/Module.php",
            ],
            "app" => [
                "className" => "Coam\\App\\Multiple\\App\\Module",
                "path" => WEB_APP_DIR . "/Multiple/App/Module.php",
            ],
            "open" => [
                "className" => "Coam\\App\\Multiple\\Open\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Open/Module.php",
            ],
            "pay" => [
                "className" => "Coam\\App\\Multiple\\Pay\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Pay/Module.php",
            ],
            "im" => [
                "className" => "Coam\\App\\Multiple\\Im\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Im/Module.php",
            ],
            "blog" => [
                "className" => "Coam\\App\\Multiple\\Blog\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Blog/Module.php",
            ],
            "mail" => [
                "className" => "Coam\\App\\Multiple\\Mail\\Module",
                "path" => WEB_APP_DIR . "/Multiple/Mail/Module.php",
            ],
        ]
    );
 
    echo $application->handle()->getContent();
 
} catch (\Phalcon\Exception $e) {
    echo $e->getMessage();
} catch (PDOException $e) {
    echo $e->getMessage();
}
 
# 是否开启 XhProf 调试日志 ...
if (DEBUG_ENV) Coam\App\Library\Zz_Api::endXhProfDebug();
KeyValue
_url/web/
KeyValue
USERwww-data
HOME/var/www
HTTP_CONNECTIONclose
HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_USER_AGENTCCBot/2.0 (http://commoncrawl.org/faq/)
HTTP_ACCEPT_ENCODINGx-gzip, gzip, deflate
HTTP_HOSTcoam.co
REDIRECT_STATUS200
SERVER_NAMEcoam.co
SERVER_PORT443
SERVER_ADDR103.37.147.250
REMOTE_PORT35768
REMOTE_ADDR54.166.228.35
SERVER_SOFTWAREnginx/1.12.0
GATEWAY_INTERFACECGI/1.1
REQUEST_SCHEMEhttps
SERVER_PROTOCOLHTTP/1.1
DOCUMENT_ROOT/data/home/yzhang/WebCoam/Web/public/
DOCUMENT_URI/index.php
REQUEST_URI/
SCRIPT_NAME/index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHODGET
QUERY_STRING_url=/web/
HTTPSon
SCRIPT_FILENAME/data/home/yzhang/WebCoam/Web/public//index.php
FCGI_ROLERESPONDER
PHP_SELF/index.php
REQUEST_TIME_FLOAT1531701085.9301
REQUEST_TIME1531701085
#Path
0/data/home/yzhang/WebCoam/Web/public/index.php
1/data/home/yzhang/WebCoam/Web/Applications/Common/Config/config_common.php
2/data/home/yzhang/WebCoam/Web/Applications/Plugins/Pay/aliPay/lib/alipay_submit.class.php
3/data/home/yzhang/WebCoam/Web/Applications/Plugins/Pay/aliPay/lib/alipay_core.function.php
4/data/home/yzhang/WebCoam/Web/Applications/Plugins/Pay/aliPay/lib/alipay_md5.function.php
5/data/home/yzhang/WebCoam/Web/Applications/Plugins/Pay/aliPay/lib/alipay_notify.class.php
6/data/home/yzhang/WebCoam/Web/Applications/Common/loader.php
7/data/home/yzhang/WebCoam/Web/vendor/autoload.php
8/data/home/yzhang/WebCoam/Web/vendor/composer/autoload_real.php
9/data/home/yzhang/WebCoam/Web/vendor/composer/ClassLoader.php
10/data/home/yzhang/WebCoam/Web/vendor/composer/autoload_static.php
11/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/psr7/src/functions_include.php
12/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/psr7/src/functions.php
13/data/home/yzhang/WebCoam/Web/vendor/clue/stream-filter/src/functions.php
14/data/home/yzhang/WebCoam/Web/vendor/paragonie/random_compat/lib/random.php
15/data/home/yzhang/WebCoam/Web/vendor/php-http/message/src/filters.php
16/data/home/yzhang/WebCoam/Web/vendor/symfony/polyfill-mbstring/bootstrap.php
17/data/home/yzhang/WebCoam/Web/vendor/symfony/polyfill-php70/bootstrap.php
18/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/promises/src/functions_include.php
19/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/promises/src/functions.php
20/data/home/yzhang/WebCoam/Web/vendor/swiftmailer/swiftmailer/lib/swift_required.php
21/data/home/yzhang/WebCoam/Web/vendor/swiftmailer/swiftmailer/lib/classes/Swift.php
22/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/guzzle/src/functions_include.php
23/data/home/yzhang/WebCoam/Web/vendor/guzzlehttp/guzzle/src/functions.php
24/data/home/yzhang/WebCoam/Web/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
25/data/home/yzhang/WebCoam/Web/vendor/khanamiryan/qrcode-detector-decoder/lib/common/customFunctions.php
26/data/home/yzhang/WebCoam/Web/vendor/tinify/tinify/lib/Tinify.php
27/data/home/yzhang/WebCoam/Web/vendor/tinify/tinify/lib/Tinify/Exception.php
28/data/home/yzhang/WebCoam/Web/vendor/overtrue/wechat/src/Payment/helpers.php
29/data/home/yzhang/WebCoam/Web/vendor/qiniu/php-sdk/src/Qiniu/functions.php
30/data/home/yzhang/WebCoam/Web/vendor/qiniu/php-sdk/src/Qiniu/Config.php
31/data/home/yzhang/WebCoam/Web/vendor/xxtea/xxtea/xxtea.php
32/data/home/yzhang/WebCoam/Web/Applications/Plugins/CurlFuture/curl_future.php
33/data/home/yzhang/WebCoam/Web/Applications/Plugins/CurlFuture/inc/future.php
34/data/home/yzhang/WebCoam/Web/Applications/Plugins/CurlFuture/inc/http_future.php
35/data/home/yzhang/WebCoam/Web/Applications/Plugins/CurlFuture/inc/task.php
36/data/home/yzhang/WebCoam/Web/Applications/Plugins/CurlFuture/inc/task_manager.php
37/data/home/yzhang/WebCoam/Web/Applications/Common/logger.php
38/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-base.php
39/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-common.php
40/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-db.php
41/data/home/yzhang/WebCoam/Web/Applications/Common/di-services-web.php
42/data/home/yzhang/WebCoam/Web/Applications/Common/routes.php
43/data/home/yzhang/WebCoam/Web/Applications/Multiple/Web/Module.php
44/data/home/yzhang/WebCoam/Web/Applications/Utils/ModuleBase.php
45/data/home/yzhang/WebCoam/Web/Applications/Utils/DiSecurity.php
46/data/home/yzhang/WebCoam/Web/Applications/Library/DiSecurityBase.php
Memory
Usage2097152