codecamp

简单介绍以及环境搭建

PHALAPI-入门篇1(简单介绍以及环境搭建)

前言

先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架。

在进行项目接口的开发过程中,笔者在寻找一个方便针对API开发的框架时,发现了PhalApi。经过了短时间的尝试,发现PhalApi确实很便捷,效率很高。 之后就把PhalApi运用到正式的项目上。而且在后面的项目仍一直使用。其间,也和很多希望了解PhalApi框架的朋友做过很多交流。为此,决定写一篇关于这个框架的教程。一方面是为了帮助一些初学者能够快速地了解PhalApi,另一方面是希望把自己在实际运用中总结出的一些小技巧分享出来。

附上:

喵了个咪的博客:w-blog.cn

官网地址:http://www.phalapi.net/

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

1. 简单的介绍

官网上面有一句话让我特别有感受--接口,从简单开始!

怎样的感受呢,在最近进行一个项目开发的时候,因为项目比较紧急需要快速地开发。从确定完需求以及接口之后,借助PhalApi,我仅用了8个小时就完成项目接口的开发。整个项目的接口差不多20来个,从这点可以看出,如果PhalApi框架用得熟练的话,效率将会提高更多。

其实,接口最关心的就是性能。通过测试下来,Phalapi消耗相对比较小,引入文件在10个左右,空框架返回2核2G并发点击数在1700左右。很是给力。在2核2G正常请求数据库接口相对于一套完整的业务。平均下来最快的1000并发,最慢的600并发。所以我觉得性能方面,PhalApi完全没有问题(压力测试使用的是Loadrunner,ab压力基本是Loadrunner的3倍不太清楚为什么)。

引用:

勿忘初心,方得始终

虽然现在这个社会的节奏很快,但如果有时间时,我们不妨静下来,稍微地思考一下,然后你会发现:慢慢来,比较快。

PhalApi 的初衷:

我们之所以开源这个框架,是因为我们想致力于提供可以快速进行开发后台接口的框架,并且通过这个框架分享更多开发的最佳实践、原则和模式!这就是我们的初心,也希望我们能一直坚持下去。

PhalApi命名的来源

得益于开源社区,现在有很多优秀的开源框架。确实有很多框架值得我们去学习和使用,其中高性能的Phalcon框架和可视化代码评审工具Phabricator都是相当令人敬佩和认可的。前者在思想、模式和原则上有很好的文档说明;后者在包管理、命名写法等都非常好地体现了代码重用。受此两个框架的影响,故取名为:PhalApi。

通过PhalApi,我们希望可以

支撑轻量级项目后台接口的快速开发;阐明如何进行框架设计、对应复杂领域业务、支撑海量服务等,以及分享好的思想、技巧工具和最佳实践。最后,争取成为国内主流的PHP接口开发框架。

2. 环境搭建

在这里推荐使用(我后面的配置等都会基于以下环境)lnmp:

Liunx+Nginx+php5.4以上+mysql

我使用的是centos6.5

有三种方式配置环境:

1.手动编译安装(网上资料也挺多的,但是容易出现一些依赖性的问题,新手不推荐。)。

2.yum或apt-get安装(yum安装无法指定目录,都会装到/etc下面去,不方便管理,但是要玩liunx必须要会。)。

3.lnmp一键安装工具(推荐:但是这个推荐是基于上面几种方式都尝试过的情况下,这个安装方式基于--编译安装。)。

我推荐一个lnmp一键配置软件:

官网:OneinStack – 一键PHP/JAVA安装工具:http://oneinstack.com/

因为官网介绍得比较详细,在这里就不再多做说明。其余几种方式教程都比较多也不做说明。

那不了解liunx怎么办?wampserver在windows下还是比较好用的。

3. 总结

最后,希望大家在通读PhalApi官方文档后,再接着看下面的文章,会更容易理解。在这一套教程中,我会以构建一个完整的项目为基础,拓展开来讲解一些框架的机制。大家可以跟着一起做,相信能够收获得更多。

注:笔者能力有限,有说的不对的地方,希望大家能够指出。也希望多多交流!

官网QQ交流群:421032344 欢迎大家的加入!

七、教程
把它玩起来
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

八、视频教程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }