在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Phalcon+Phalcon+ 是一个轻量级的基于 PhalconPHP 的Zephir/C框架。我们想为Phalcon开发者构建一个一步到位的解决方案。正是因为Phalcon极高的灵活性,赋予了开发者过多的选择权。有时候路口太多容易迷失,所以当我做完这一系列选择后,我把这个过程记录了下来,并逐渐演化成了现在的Phalcon+。为了让每个开发者不重复去做这些选择,我毅然将Phalcon+开源,供大家交流和学习。 So, 总结来说,Phalcon+并不是一个全新的框架,而是对Phalcon框架的一次优秀实践,是对Phalcon框架的再次加工和补充,能让Phalcon开发者更简单地入门和精通,最后达到天人合一的最高境界。 依赖* PHP 7.0 or above* cPhalcon 3.4.x,在官方发布3.4.6之前一定要下载此分支,通过`zephir build`手动编译phalcon - https://github.com/phalcon/cphalcon/tree/3.4.x > 安装zephir之前,需要先安装扩展 https://github.com/phalcon/php-zephir-parser ,然后使用`composer`安装`zephir` `composer global require phalcon/zephir` 约束
MaaS & MaaL
安装➜ git clone https://github.com/bullsoft/phalconplus.git➜ cd phalconplus/ext/➜ /usr/bin/phpize➜ ./configure --with-php-config=/usr/bin/php-configure➜ make➜ make install 创建应用# 下载骨架➜ composer create-project bullsoft/fp-project fp-app# 生成模块,假设生成的模块名为test➜ cd fp-app➜ ./common/bin/fp-devtool module:create现在开始引导您创建Phalcon+模块 ...Step 1 请输入该模块的名称,如"api"[Enter]: testStep 2 ......... 一个Web模块的结构如下,Web模块中集成了所有的模式,包括Cli,RpcService。 test.├── app│ ├── Module.php│ ├── auth│ │ ├── AclResources.php│ │ ├── Model.php│ │ ├── Resources│ │ │ ├── Actions.php│ │ │ └── Models.php│ │ └── User.php│ ├── config│ │ └── dev.php│ ├── controllers│ │ ├── BaseController.php│ │ ├── ErrorController.php│ │ ├── IndexController.php│ │ ├── UserController.php│ │ └── apis│ │ └── DemoController.php│ ├── events│ │ ├── Acl.php│ │ ├── AppConsole.php│ │ ├── AppHandler.php│ │ ├── BackendServer.php│ │ ├── Db.php│ │ ├── EventProvider.php│ │ ├── Model.php│ │ ├── MvcDispatch.php│ │ ├── Router.php│ │ ├── SuperApp.php│ │ └── View.php│ ├── exceptions│ │ ├── EnumExceptionCode.php│ │ ├── Handler.php│ │ ├── UnknownException.php│ │ ├── UserAlreadyExistsException.php│ │ └── UserNotExistsException.php│ ├── plugins│ │ └── Volt.php│ ├── providers│ │ ├── CookieServiceProvider.php│ │ ├── CryptServiceProvider.php│ │ ├── DatabaseServiceProvider.php│ │ ├── DispatcherServiceProvider.php│ │ ├── LoggerServiceProvider.php│ │ ├── RedisServiceProvider.php│ │ ├── RouterServiceProvider.php│ │ ├── RpcServiceProvider.php│ │ ├── ServiceProvider.php│ │ ├── SessionServiceProvider.php│ │ ├── UrlServiceProvider.php│ │ └── ViewServiceProvider.php│ ├── routes│ │ ├── Api.php│ │ └── Bare.php│ └── views│ ├── error│ │ ├── show403.volt│ │ ├── show404.volt│ │ └── show500.volt│ ├── index│ │ └── index.volt│ └── index.volt├── cli│ ├── init.php│ └── tasks│ └── HelloTask.php├── public│ ├── index.php│ └── rpc.php├── src│ ├── models│ │ └── UserModel.php│ ├── protos│ │ ├── Enums│ │ │ └── UserStatus.php│ │ └── Schemas│ │ └── RegInfo.php│ └── services│ ├── BaseService.php│ └── DemoService.php└── var └── cache 运行使用Phalcon+DevTool➜ ./common/bin/fp-devtool server:start test正在为您启动服务器...{ "command": "{ (php -S 0.0.0.0:8181 -t public/ .htrouter.php) <&3 3<&- 3>/dev/null & } 3<&0;pid=$!; echo $pid > /path/to/test/var/run/server.pid", "pid": 8249, "running": true, "signaled": false, "stopped": false, "exitcode": -1, "termsig": 0, "stopsig": 0}... 启动成功,请使用 http://127.0.0.1:8181 访问 使用PPM➜ cd test➜ ../vendor/bin/ppm start --bridge="PhalconPlus\\Bridge" --bootstrap="PhalconPlus\\Bootstrap" --static-directory=public/ --port=8181 --workers=2 当然也可以创建配置文件,以便每次启动更方便 ➜ cd test➜ touch ppm.json➜ ../vendor/bin/ppm start -c ppm.json ppm.json内容如下: { "bridge": "PhalconPlus\\Bridge", "host": "127.0.0.1", "port": 8181, "workers": 2, "app-env": "dev", "debug": 1, "logging": 1, "static-directory": "public/", "bootstrap": "PhalconPlus\\Bootstrap", "max-requests": 1000, "concurrent-requests": 20, "php-cgi": "/usr/local/opt/[email protected]/bin/php"} 使用RoadRunner➜ composer require spiral/roadrunner➜ cd test➜ touch .rr.json➜ touch psr-worker.php .rr.json内容如下: { "http": { "address": "0.0.0.0:8181", "workers": { "command": "/usr/local/opt/[email protected]/bin/php psr-worker.php", "relay": "unix://rr.sock", "pool": { "numWorkers": 2 } } }, "static" : { "enable" : true, "dir": "public", "forbid": [".php", ".htaccess"] }} psr-worker.php内容如下: <?phpuse Spiral\Goridge;use Spiral\RoadRunner;use PhalconPlus\Http\PsrResponseFactory;ini_set('display_errors', 'stderr');$app = (new PhalconPlus\Bootstrap(__DIR__))->app();$worker = new RoadRunner\Worker( new Goridge\SocketRelay(__DIR__."/rr.sock", null, Goridge\SocketRelay::SOCK_UNIX));$psr7 = new RoadRunner\PSR7Client($worker);while ($req = $psr7->acceptRequest()) { try { $resp = $app->handle($req); } catch (\Throwable $e) { Test\Exceptions\Handler::catch($e); $resp = $app->response(); } $psr7->respond(PsrResponseFactory::create($resp)); $app->terminate(); unset($req, $resp);} 然后在模块目录下执行 ➜ rr serve -d -v 使用Nginx配置文件 server { listen 8181; server_name localhost; access_log /var/log/nginx/test.access.log; index index.php index.html index.htm; set $root_path '/home/work/wwwroot/fp-app/test/public'; root $root_path; try_files $uri $uri/ @rewrite; location @rewrite { rewrite ^/(.*)$ /index.php last; } location ~ \.php { fastcgi_pass unix:/run/php/php7.2-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { root $root_path; } location ~ /\.ht { deny all; }} 反馈&支持欢迎任何反馈,也希望得到大家的捐助支持。 祝一切顺利没八二哥 :) |
请发表评论