ini_set('display_errors', 'on');
if(strpos(strtolower(PHP_OS), 'win') === 0)
{
exit("start.php not support windows.\n");
}
// 检查扩展
if(!extension_loaded('pcntl'))
{
exit("Please install pcntl extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
}
if(!extension_loaded('posix'))
{
exit("Please install posix extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
}
define('APP_PATH', __DIR__ . '/application/');
//绑定默认模块和控制器
define('BIND_MODULE','push/Run');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';第四步:编写GatewayWorker运行代码use Workerman\Worker;
use GatewayWorker\Register;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
//控制器无需继承Controller
/**
* 构造函数
* @access public
*/
public function __construct()
{
//由于是手动添加,因此需要注册命名空间,方便自动加载,具体代码路径以实际情况为准
\think\Loader::addNamespace([
'Workerman' => EXTEND_PATH . 'Workerman/workerman',
'GatewayWorker' =>EXTEND_PATH . 'Workerman/gateway-worker/src',
]);
//初始化各个GatewayWorker
//初始化register
new Register('text://0.0.0.0:1238');
//初始化 bussinessWorker 进程
$worker = new BusinessWorker();
$worker->name = 'YourAppBusinessWorker';
$worker->count = 4;
$worker->registerAddress = '127.0.0.1:1238';
//设置处理业务的类,此处制定Events的命名空间
$worker->eventHandler = '\app\push\controller\Events';
// 初始化 gateway 进程
$gateway = new Gateway("websocket://0.0.0.0:8282");
$gateway->name = 'YourAppGateway';
$gateway->count = 4;
$gateway->lanIp = '127.0.0.1';
$gateway->startPort = 2900;
$gateway->registerAddress = '127.0.0.1:1238';
//运行所有Worker;
Worker::runAll();
}第五步:编写Events.php 进行业务处理;//可直接使用GatewayWorker代码包中GatewayWorker\Applications\YourApp的Events.php代码
//也可使用TP的各种函数和类库至此,服务端已经编写完毕; \think\Loader::addNamespace([
'Workerman' => EXTEND_PATH . 'Workerman/workerman',
'GatewayWorker' =>EXTEND_PATH . 'Workerman/gateway-worker/src',
]);只要确保文件加载正常,后续操作就是将 Register,BusinessWorker和Gateway 初始化,运行即可;ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。