Rumah > pembangunan bahagian belakang > tutorial php > PHP扩展实现的简单MVC框架

PHP扩展实现的简单MVC框架

WBOY
Lepaskan: 2016-06-23 13:59:22
asal
840 orang telah melayarinya

公司项目中WEB项目几乎都是使用codeigniter框架,为了降低PHP的单次执行请求时间、减低服务器处理响应时间,
同时提高每分钟应答的总数,开发这个扩展的目的是将Router、Template、Config、Controller等框架提高的基础通用功能由底层实现,
PHP脚本仅处理业务逻辑,发挥各自的优势。

考虑到项目迁移的成本,所以此扩展的MVC也是基于CI原型来设计的,同时也去除了很多不常用的功能。

支持版本:PHP5.3+

下面提供了两张截图,1分钟内针对相同网址并发数从10至100的请求测试结果。

数据对比:(测试工具curl loader)类型      1分钟总请求数     成功次数        失败次数    平均响应时间   平均每秒请求数原CI框架    17706           15772           1844        137ms           267次扩展        57599           46654           10881       6ms             866次
Salin selepas log masuk

原PHP Ci框架:

扩展MVC:

扩展实现的框架,响应速度提高了约10倍,请求总数提高了约3倍,失败率提高了约8%。

使用案例: Nginx.conf配置单入口(与Ci一样单入口一样,没有变动),例如:

   server {        listen 80;        server_name test.cn;        index index.php;        root /usr/local/wwwroot/test/public;          location / {                rewrite ^/$ /index.php last;                #一下是防止某些文件夹被直接访问                rewrite ^/(?!index\.php|robots\.txt|images|js|css|styles|static)(.*)$ /index.php/$1 last;          }          location ~ \.php {                fastcgi_pass   127.0.0.1:9000;                fastcgi_index  index.php;                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;                include        fastcgi_params;          }    }
Salin selepas log masuk

入口文件index.php:

$application_folder = 'application';$dir_path = './';if (strpos(__FILE__, '\') !== false) {    $dir_path =  substr(__FILE__, 0, strrpos(__FILE__, '\')) . '/';} elseif (strpos(__FILE__, '/') !== false) {    $dir_path =  substr(__FILE__, 0, strrpos(__FILE__, '/')) . '/';}define('BASEPATH', str_replace("\", "/", realpath($dir_path.'../').'/'));define('APPPATH', realpath(BASEPATH.$application_folder).'/');$framework = new wk_framework();$framework->loadView();$framework->setTemplateDir(APPPATH.'../public/template/');$framework->setCompileDir(APPPATH.'../public/data/complie/');$framework->setApplicationPath(APPPATH);//此处release、test、development,会根据条件自动切换配置文件路径//优先寻找/application/config/ENVIRONMENT/config,没有在寻找/application/config/config$framework->setEnvironment('release');require_once(APPPATH.'core/WK_Controller.php');$framework->initialize();$framework->captureRouter();
Salin selepas log masuk


安装扩展方法参见: 进入
前往项目网址: 进入


sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan