thinkphp3.2整合workerman 多入口模式(windows)

时间:2022-04-01 02:50:54

第一步:将Workerman复制到ThinkPHP项目中的适当位置(我是放到根目录,与ThinkPHP平级)

第二步:将Workerman中的所有文件(除/Workerman/Lib/Constants.php外)后缀改为.class.php,如:Worker.php改为Worker.class.php

第三步:配置ThinkPHP的定名空间自动加载。在ThinkPHP的配置文件中插手

‘AUTOLOAD_NAMESPACE‘ => array( ‘Workerman‘ => ROOT_PATH . ‘Workerman‘,//按照本身的存放位置改削 )

第四步:在ThinkPHP项目中新增Worker模块和Worker控制器,也可以按照本身的爱好来定名

namespace Worker\Controller; use Workerman\Worker; class Worker { public function Start() { $worker = new Worker(‘text://0.0.0.0:1234‘); //实例化Worker,并设置协议、IP和端口 $worker->count = 4; $worker->onMessage = array($this, ‘onMessage‘); //worker的其它回调要领可以参考onMessage Worker::runAll(); } public function onMessage($connection, $data) { $connection->send(‘something...‘); } }

在onMessage要领中,还可以按照自界说的协议和内容格局,通过ThinkPHP的A()要领来挪用相关的模块、控制器,就可以做到跟普通的ThinkPHP项目不异的开发模式了,如:

$class = A($data[‘m‘] . ‘/‘ . $data[‘c‘]); if (!$class) { $connection->send(‘Module or Controller not found.‘); } else { $action = $data[‘a‘]; unset($data[‘m‘], $data[‘c‘], $data[‘a‘]); try { call_user_func_array(array($class, $action), $data); } catch (Exception $ex) { throw $ex; } }

第五步:ThinkPHP入口绑定。入口绑定是ThinkPHP3.2.1+给出的要领,,之前的版本也有相应的要领,网上是可以查得到的。

新建入口文件worker.php

define(‘APP_PATH‘,‘./Application/‘);
define(‘BIND_MODULE‘, ‘Worker‘); define(‘BIND_CONTROLLER‘, ‘Worker‘); define(‘BIND_ACTION‘, ‘Start‘) //ThinkPHP的其他设定 require ‘./ThinkPHP/ThinkPHP.php‘;

最后:通过bat文件运行worker.php文件(Windows环境直接运行会报错)

thinkphp3.2整合workerman 多入口模式(windows)

标签:

原文地点:https://www.cnblogs.com/limonyun/p/8878710.html