mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-07-03 23:05:37 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
076339baec | ||
|
|
50026be73d | ||
|
|
a1ad634926 | ||
|
|
0a5defaf29 | ||
|
|
557efc47a8 | ||
|
|
c566f940e0 |
@@ -3,7 +3,7 @@
|
||||
"description": "High performance QQ robot and web server development framework",
|
||||
"minimum-stability": "stable",
|
||||
"license": "Apache-2.0",
|
||||
"version": "2.1.3",
|
||||
"version": "2.1.4",
|
||||
"extra": {
|
||||
"exclude_annotate": [
|
||||
"src/ZM"
|
||||
|
||||
@@ -75,40 +75,6 @@ class ServerEventHandler
|
||||
/** @noinspection PhpUndefinedFieldInspection */ Event::del(Framework::$server->inotify);
|
||||
ZMUtil::stop();
|
||||
});
|
||||
set_error_handler(function ($error_no, $error_msg, $error_file, $error_line) {
|
||||
switch ($error_no) {
|
||||
case E_WARNING:
|
||||
$level_tips = 'PHP Warning: ';
|
||||
break;
|
||||
case E_NOTICE:
|
||||
$level_tips = 'PHP Notice: ';
|
||||
break;
|
||||
case E_DEPRECATED:
|
||||
$level_tips = 'PHP Deprecated: ';
|
||||
break;
|
||||
case E_USER_ERROR:
|
||||
$level_tips = 'User Error: ';
|
||||
break;
|
||||
case E_USER_WARNING:
|
||||
$level_tips = 'User Warning: ';
|
||||
break;
|
||||
case E_USER_NOTICE:
|
||||
$level_tips = 'User Notice: ';
|
||||
break;
|
||||
case E_USER_DEPRECATED:
|
||||
$level_tips = 'User Deprecated: ';
|
||||
break;
|
||||
case E_STRICT:
|
||||
$level_tips = 'PHP Strict: ';
|
||||
break;
|
||||
default:
|
||||
$level_tips = 'Unkonw Type Error: ';
|
||||
break;
|
||||
} // do some handle
|
||||
$error = $level_tips . $error_msg . ' in ' . $error_file . ' on ' . $error_line;
|
||||
Console::warning($error); // 如果 return false 则错误会继续递交给 PHP 标准错误处理 /
|
||||
return true;
|
||||
}, E_ALL | E_STRICT);
|
||||
if (Framework::$argv["watch"]) {
|
||||
if (extension_loaded('inotify')) {
|
||||
Console::warning("Enabled File watcher, do not use in production.");
|
||||
@@ -359,7 +325,6 @@ class ServerEventHandler
|
||||
try {
|
||||
$dis1->dispatchEvents($request, $response);
|
||||
$dis->dispatchEvents($request, $response);
|
||||
var_dump($dis->status);
|
||||
if ($dis->status === EventDispatcher::STATUS_NORMAL && $dis1->status === EventDispatcher::STATUS_NORMAL) {
|
||||
$result = HttpUtil::parseUri($request, $response, $request->server["request_uri"], $node, $params);
|
||||
if ($result === true) {
|
||||
|
||||
@@ -94,6 +94,7 @@ class Framework
|
||||
"version" => ZM_VERSION,
|
||||
"config" => $args["env"] === null ? 'global.php' : $args["env"]
|
||||
];
|
||||
if(APP_VERSION !== "unknown") $out["app_version"] = APP_VERSION;
|
||||
if (isset(ZMConfig::get("global", "swoole")["task_worker_num"])) {
|
||||
$out["task_worker_num"] = ZMConfig::get("global", "swoole")["task_worker_num"];
|
||||
}
|
||||
@@ -129,6 +130,40 @@ class Framework
|
||||
LightCache::init($r);
|
||||
LightCacheInside::init();
|
||||
SpinLock::init($r["size"]);
|
||||
set_error_handler(function ($error_no, $error_msg, $error_file, $error_line) {
|
||||
switch ($error_no) {
|
||||
case E_WARNING:
|
||||
$level_tips = 'PHP Warning: ';
|
||||
break;
|
||||
case E_NOTICE:
|
||||
$level_tips = 'PHP Notice: ';
|
||||
break;
|
||||
case E_DEPRECATED:
|
||||
$level_tips = 'PHP Deprecated: ';
|
||||
break;
|
||||
case E_USER_ERROR:
|
||||
$level_tips = 'User Error: ';
|
||||
break;
|
||||
case E_USER_WARNING:
|
||||
$level_tips = 'User Warning: ';
|
||||
break;
|
||||
case E_USER_NOTICE:
|
||||
$level_tips = 'User Notice: ';
|
||||
break;
|
||||
case E_USER_DEPRECATED:
|
||||
$level_tips = 'User Deprecated: ';
|
||||
break;
|
||||
case E_STRICT:
|
||||
$level_tips = 'PHP Strict: ';
|
||||
break;
|
||||
default:
|
||||
$level_tips = 'Unkonw Type Error: ';
|
||||
break;
|
||||
} // do some handle
|
||||
$error = $level_tips . $error_msg . ' in ' . $error_file . ' on ' . $error_line;
|
||||
Console::warning($error); // 如果 return false 则错误会继续递交给 PHP 标准错误处理 /
|
||||
return true;
|
||||
}, E_ALL | E_STRICT);
|
||||
} catch (Exception $e) {
|
||||
Console::error("Framework初始化出现错误,请检查!");
|
||||
Console::error($e->getMessage());
|
||||
|
||||
@@ -94,7 +94,8 @@ class Response
|
||||
*/
|
||||
public function status($http_code, $reason = null) {
|
||||
$this->status_code = $http_code;
|
||||
return $this->response->status($http_code, $reason);
|
||||
if (!$this->is_end) return $this->response->status($http_code, $reason);
|
||||
else return false;
|
||||
}
|
||||
|
||||
public function getStatusCode() {
|
||||
@@ -107,7 +108,8 @@ class Response
|
||||
* @return mixed
|
||||
*/
|
||||
public function setStatusCode($http_code, $reason = null) {
|
||||
return $this->response->setStatusCode($http_code, $reason);
|
||||
if (!$this->is_end) return $this->response->setStatusCode($http_code, $reason);
|
||||
else return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -117,7 +119,8 @@ class Response
|
||||
* @return mixed
|
||||
*/
|
||||
public function header($key, $value, $ucwords = null) {
|
||||
return $this->response->header($key, $value, $ucwords);
|
||||
if (!$this->is_end) return $this->response->header($key, $value, $ucwords);
|
||||
else return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -127,7 +130,7 @@ class Response
|
||||
* @return mixed
|
||||
*/
|
||||
public function setHeader($key, $value, $ucwords = null) {
|
||||
return $this->response->setHeader($key, $value, $ucwords);
|
||||
return !$this->is_end ? $this->response->setHeader($key, $value, $ucwords) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,13 +162,17 @@ class Response
|
||||
* @return mixed
|
||||
*/
|
||||
public function end($content = null) {
|
||||
$this->is_end = true;
|
||||
return $this->response->end($content);
|
||||
if(!$this->is_end) {
|
||||
$this->is_end = true;
|
||||
return $this->response->end($content);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function isEnd() { return $this->is_end; }
|
||||
|
||||
public function endWithStatus($status_code = 200, $content = null){
|
||||
public function endWithStatus($status_code = 200, $content = null) {
|
||||
$this->status($status_code);
|
||||
$this->end($content);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
<?php #plain
|
||||
|
||||
use ZM\Config\ZMConfig;
|
||||
use ZM\Utils\DataProvider;
|
||||
|
||||
define("ZM_START_TIME", microtime(true));
|
||||
define("ZM_DATA", ZMConfig::get("global", "zm_data"));
|
||||
define("ZM_VERSION", json_decode(file_get_contents(__DIR__ . "/../../composer.json"), true)["version"] ?? "unknown");
|
||||
define("APP_VERSION", json_decode(file_get_contents(DataProvider::getWorkingDir() . "/composer.json"), true)["version"] ?? "unknown");
|
||||
define("CRASH_DIR", ZMConfig::get("global", "crash_dir"));
|
||||
@mkdir(ZM_DATA);
|
||||
@mkdir(CRASH_DIR);
|
||||
|
||||
@@ -89,6 +89,12 @@ function getAllClasses($dir, $indoor_name) {
|
||||
if (is_dir($dir . $v)) $classes = array_merge($classes, getAllClasses($dir . $v . "/", $indoor_name . "\\" . $v));
|
||||
elseif (mb_substr($v, -4) == ".php") {
|
||||
if(substr(file_get_contents($dir.$v), 6, 6) == "#plain") continue;
|
||||
$composer = json_decode(file_get_contents(DataProvider::getWorkingDir()."/composer.json"), true);
|
||||
foreach($composer["autoload"]["files"] as $fi) {
|
||||
if(realpath(DataProvider::getWorkingDir()."/".$fi) == realpath($dir.$v)) {
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
$class_name = $indoor_name . "\\" . mb_substr($v, 0, -4);
|
||||
$classes [] = $class_name;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user