项目地址:
https://github.com/dvaknheo/workermanhttpd
WorkermanHttpd 致力于 Workerman 代码和 fpm 平台 代码几乎不用修改就可以双平台运行。 是对 Workerman 类的一个封装。
直接用 echo 输出。直接用超全局变量 $_GET,$_POST 等 只有少量系统函数改为 WorkermanHttpd 封装,按字母排序有:
比如原先代码里有 exit()
; 要修改成 WorkermanHttpd::exit()
; 调用参数都一样
比如原先代码里有 session_start()
; 要修改成 WorkermanHttpd::session_start()
; 调用参数都一样
具体可以调用 WorkermanHttpd::system_wrapper_get_providers()
看有什么
composer require dvaknheo/workermanhttpd
<?php
require(__DIR__.'/vendor/autoload.php');
function hello()
{
\WorkermanHttpd\WorkermanHttpd::header('test',DATE(DATE_ATOM));
echo "<h1> hello ,have a good start.</h1><pre>\n";
var_dump($_GET,$_POST,$_SERVER);
echo "</pre>";
return true; // 正常 true , 404 false;
}
$options=[
'port'=>8080,
'http_handler'=>'hello',
//* 更多的默认选项
/*//
//'host' =>'127.0.0.1', //绑定 IP
//'port' =>'8787', //绑定端口
'worker_name' => 'WorkermanHttpd', //标题
'worker_count' => -1, //CPU
'worker_properties' => [], //给 Worker 类传递的属性
'request_class' => '', //默认的请求类,一般不动。
'command' => 'start', //对应命令 , stop 等
'background' => false, //后台模式
'gracefull' => false, //优雅模式
//// 这段是几个服务器通用的
//'http_handler' => null, //执行的 http_handler
'http_handler_basepath' => '', //下版本再说, 资源目录
'http_handler_root' => null, //下版本再说,
'http_handler_file' => null, //下版本再说,
'http_exception_handler' => null, //下版本再说,对应 set_exception_handler
'http_404_handler' => null, //下版本再说,404 处理
'with_http_handler_root' => false, //下版本再说,是否主目录 index.php
'with_http_handler_file' => false, //下版本再说,是否开启资源文件读取
//*/
];
\WorkermanHttpd\WorkermanHttpd::RunQuickly($options);
浏览器打开 http://127.0.0.1:8080/ ,即可看到效果 ,header 多了一行, 几个超全局变量也能正常使用。
除了主类和 SingletonExTrait 其他类都是无状态的
中断的异常类。一般不直接用,你需要 WorkermanHttpd::Exit()
;
封装了 DuckPhp\Http\Server
的类 用于 DuckPhp 工程
可变单例请求类, 扩充自 Workerman\Protocols\Http\Request
使用 SingletonExTrait
可用 Request::G(MyRequest::G()) 替换
可变单例请求类, 扩充自 Workerman\Protocols\Http\Response
使用 SingletonExTrait
可用 Request::G(MyRequest::G()) 替换
可变单例类。 和 DuckPhp 的一样效果
主类。主要调用这个。 使用 SingletonExTrait
RunQuickly($options)
快速运行
WorkermanHttpd::Request() 获得当前 Request 对象。 Response 获得当前 Response 对象。 OnWorkerStart($worker) 事件处理 OnMessage($connection, $request) 消息处理。
G($object = null)
可用 WorkermanHttpd::G(MyWorkermanHttpd::G()) 修改你的实现
php duckphp.php run --override-class=WorkermanHttpd/HttpServerForDuckphp --command start
其他碎碎念:
DuckPhp 框架的 workerman 平台(开发中)就是用这个封装,不需要改任何代码就从 fpm 平台跑到 workerman 平台加速了。
QQ 群: 714610448
过几天同步到 gitee 平台去。 这段时间的效率很低下,发出来看看能否提高一点效率 workermanhttpd 做了,以前的 swoolehttpd 也要改进适配新版 duckphp 。 性能测试是个 todo 。 然后大活就是后台框架了。 duckphp “把其他工程当成当前工程 composer lib 的” 的模式正在打磨。 到时候做新后台只要 composerrequire 就行了, 而不是现在各种 php 框架从 composer project 开始 而且所有插件真的是都可以不强改第三方代码的情况下各种对第三方代码魔改。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.