public function uploadOSS($input_file_field = 'pic', $save_dir = 'pic', $ext = 'jpg') { $file_path = $_FILES[$input_file_field]["tmp_name"]; if (!$file_path) { FLogger::write('tmp_name为空', 'update_mumu'); return ''; } $file_md5 = md5_file($file_path); $_file_path_info = pathinfo($_FILES[$input_file_field]['name']); $file_ext = strtolower($_file_path_info['extension']); if (!$file_ext) { $this->get_extension($file_path); } if (!$file_ext) { $file_ext = $ext; } $content_type = MimeTypes::get_mimetype(strtolower($file_ext)); $object = 'oss/' . $save_dir . '/' . date('Ym/d/His') . rand(10000, 99999) . '.' . $file_ext; $flag = $this->oss->upload_by_file($this->bucket, 'uploads/' . $object, $file_path, $content_type); if (!$flag) { $object = ''; } $data = array('object' => $object, 'md5' => $file_md5); return $data; }
/** * @return FMongoDB */ public static function getInstance($db_conf = 'default') { static $mongo = array(); if (!FConfig::get('global.mongoDB.enable')) { FLogger::write('调用了 FMongoDB,但是 配置中没有启用 global.mongoDB.enable', 'error'); return new FMongoDBNull(); } if (isset($mongo[$db_conf])) { return $mongo[$db_conf]; } else { $mongo[$db_conf] = new FMongoDB(FConfig::get('db.mongoDB.' . $db_conf . '.dsn')); $mongo[$db_conf]->selectDb(FConfig::get('db.mongoDB.' . $db_conf . '.db')); return $mongo[$db_conf]; } }
/** *处理微信服务器消息 */ public function defaultAction() { global $_F; $this->openDebug(); require_once APP_ROOT . 'lib/weixin/WeixinChat.class.php'; $options = array('token' => 'mumu2015api', 'appid' => 'wxe3ae7e3cf42d0825', 'appsecret' => '2d7b39fcb0813e7b07830683cc3caa50'); $weixin = new WeixinChat($options); // $weixin->valid(); $logger = new FLogger("weixn"); $logger->append('==============开始:==============='); $getRev = $weixin->getRev(); $logger->append($getRev->getRevText()); if ($weixin->getRevType()) { $logger->append('getRevType:' . $weixin->getRevType()); $eventData = $weixin->getRevEvent(); $logger->append('eventData:' . var_export($eventData, true)); if ($eventData) { $openid = $weixin->getRevFrom(); if ($eventData['event'] == 'click') { switch ($eventData['key']) { case 'V1001_FREE': $type = 1; break; case 'V1001_TODAY_ACTIVITY': $type = 2; break; case 'V1001_FOUND': $type = 3; break; default: $type = 1; break; } $data = $this->getNewsMsgData($type); } else { if ($eventData['event'] == 'subscribe') { // $upData = array( // 'subscribe' => 1, // 'subscribe_time' => date('Y-m-d H:i:s', time()) // ); $userInfo = $weixin->getUserInfo($openid); FLogger::write($userInfo, 'subscribe'); Service_UserWechat::reg($userInfo, $openid); // $data = $this->getNewsMsgData(2); $data = '欢迎关注缘分吧'; } if ($eventData['event'] == 'unsubscribe') { // $upData = array( // 'subscribe' => 0 // ); } } } if ($data) { $logger->append(var_export($data, true)); $logger->append(FRequest::getClientIP()); // $logger->append(json_encode($weixin->getRevData())); $weixin->text($data); $weixin->reply(); } } else { $logger->append('getRevType为空' . $weixin->getRevType()); } $logger->append('==============结束:==============='); }
/** * 获得表结构 * @return array|null * @throws Exception */ public function getTableInfo() { $tableInfo = FCache::get($this->_table); if ($tableInfo) { return $tableInfo; } $sql = "desc {$this->config['table_pre']}{$this->table_raw}"; try { $this->connect('r'); $stmt = $this->_dbh->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $tableInfo = array('pri' => null, 'fields' => null); foreach ($rows as $row) { if ($row['Key'] == 'PRI') { $tableInfo['pri'] = $row['Field']; } $tableInfo['fields'][$row['Field']] = $row; } FCache::set($this->_table, $tableInfo, 8640000); } catch (PDOException $e) { FLogger::write("获取表信息失败: " . $this->_table . "\t{$sql}\t" . $e->getMessage(), 'error'); throw new Exception("获取表信息失败。"); } return $tableInfo; }
/** * 获得表结构 * @return array|null * @throws Exception */ private function getTableInfo() { $tableInfo = FCache::get($this->_table); if ($tableInfo) { return $tableInfo; } try { $sql = "desc {$this->_table}"; $this->connect(FDB::$DB_READ); $stmt = $this->_dbh->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $tableInfo = array('pri' => null, 'fields' => null); foreach ($rows as $row) { if ($row['Key'] == 'PRI') { $tableInfo['pri'] = $row['Field']; } } $tableInfo['fields'] = $rows; FCache::set($this->_table, $tableInfo, 8640000); } catch (PDOException $e) { FLogger::write("获取表信息失败: " . $this->_table . "\t" . $e->getMessage()); throw new Exception("获取表信息失败。"); } return $tableInfo; }
/** * @param $e Exception | array */ public function traceError($e) { global $_F; $error_code = 0; $exception_trace = ''; if (!is_array($e)) { $error_code = $e->getCode(); } if (is_array($e)) { $error_message = $e['message']; $error_file = $e['file']; $error_line = $e['line']; } else { $error_message = $e->getMessage(); $error_file = $e->getFile(); $error_line = $e->getLine(); $exception_trace = nl2br($e->__toString()); } $exception_message = $error_message . '<br /> 异常出现在:' . $error_file . ' 第 ' . $error_line . ' 行'; $log_text = "\n--------------------------------------------------------\n"; if (isset($_F['current_sql'])) { $log_text .= "SQL: " . $_F['current_sql'] . "\n"; $log_text .= "--------------------------------------------------------\n"; } if (is_object($e)) { $log_text .= $e->__toString() . "\n"; $log_text .= "--------------------------------------------------------\n"; } else { $log_text .= $error_message . "\n"; $log_text .= "--------------------------------------------------------\n"; } if ($_F['run_in'] == 'shell') { $log_text_header = "\n\n ==========================================\n ERROR FOUND\n ========================================== \n"; die($log_text_header . $log_text); } FLogger::write($log_text, 'error'); if (!$_F['debug']) { if ($error_code == 404) { FResponse::sendStatusHeader(404); $this->view->displaySysPage('404.tpl'); } else { FResponse::sendStatusHeader(500); $this->view->displaySysPage('500.tpl'); } exit; } $exception_message = str_replace(F_APP_ROOT, '', $exception_message); if ($_F['in_ajax']) { if ($_F['debug']) { $ajaxError = preg_replace('/<br.+?>/i', "\n", $exception_message); FResponse::output(array('result' => 'error', 'msg' => $ajaxError)); exit; } else { if ($error_code == 404) { FResponse::sendStatusHeader(404); } else { FResponse::sendStatusHeader(500); } exit; } } $exception_trace = str_replace(F_APP_ROOT, '', $exception_trace); $this->view->assign('exception_message', $exception_message); $this->view->assign('exception_trace', preg_replace('#[\\w\\d \\#]+?/f.php.+?$#si', ' Flib 引导入口', $exception_trace)); $this->view->displaySysPage('exception.tpl'); }