看了webman框架性能介紹,有點(diǎn)垂涎,于是著手體驗(yàn)一下,但有些地方與自己的架構(gòu)思維不太符合,還發(fā)現(xiàn)了一些性能問題,在此分享如何修改和優(yōu)化。
直接去修改源文件的代碼這種方式不可取,因?yàn)楣俜缴?jí)后不好同步,也不好對(duì)比文件修改了什么地方,所以最好的方式是利用composer加載方式,重新創(chuàng)建一個(gè)目錄,把源碼文件復(fù)制到新建目錄里進(jìn)行修改,最后利用自己創(chuàng)建的autoload加載文件,具體流程如下:
在項(xiàng)目根目錄創(chuàng)建override/webman目錄,把要修改的文件復(fù)制到該目錄下,例如修改vendor/workerman/webman-framework/src/App.php,復(fù)制后的文件路徑是override/webman/App.php,然后進(jìn)行修改。
在override目錄創(chuàng)建autoload.php,用于覆蓋文件的加載,autoload.php內(nèi)容如下:
spl_autoload_register(function($class) {
$map = [
'Webman' => __DIR__ . '/webman',
'support' => __DIR__ . '/webman/support',
'Alipay\EasySDK' => __DIR__ . '/alipay'
];
$classFile = '';
foreach ($map as $namespace => $dir) {
if (0 === strpos($class, $namespace)) {
$ns = substr($class, strlen($namespace) + 1);
$ns = str_replace('\\', DIRECTORY_SEPARATOR, $ns);
$file = "{$dir}/{$ns}.php";
if (is_file($file)) {
$classFile = $file;
break;
}
}
}
if ($classFile) {
include $classFile;
}
}, true, true);
"autoload": {
"psr-4": {
"": "./",
"app\\": "./app",
"App\\": "./app",
"app\\View\\Components\\": "./app/view/components"
},
"files": [
"./support/helpers.php",
"./override/autoload.php"
]
},
$ composer dump-autoload
通過以上步驟,就可以絲滑地載入要覆蓋的文件了。
參考
http://www.wtbis.cn/a/1518
http://www.wtbis.cn/a/1519