workman框架 php,workerman 能在thinkphp的框架上使用吗

workerman 能在thinkphp的框架上使用

$Gateway =  new \Org\Util\Gateway('127.0.0.1:5136');

$Gateway->sendToUid(1021,json_encode(array()));

下载workerman, 放入thinkphp,注意与Home平级,就把workerman当做是一个模块。

进入Home/Controller目录,新建WorkermanController.class.phpworkerman和thinkphp完美结合使用源码

直接上源码,这里我是以守护进程方式运行的,调试的话,可以去掉daemonize = true 这行.

namespace Admin\Controller;

use Workerman\Worker;

/**

* 用户信息查询

*/

class WorkermanController{

/**

* 用户信息查询

*/

public function index(){

if(!IS_CLI){

die("access illegal");

}

require_once APP_PATH.'Workerman/Autoloader.php';

// 每个进程最多执行1000个请求

define('MAX_REQUEST', 1000);

Worker::$daemonize = true;//以守护进程运行

Worker::$pidFile = '/data/wwwlogs/CMSWorker/workerman.pid';//方便监控WorkerMan进程状态

Worker::$stdoutFile = '/data/wwwlogs/CMSWorker/stdout.log';//输出日志, 如echo,var_dump等

Worker::$logFile = '/data/wwwlogs/CMSWorker/workerman.log';//workerman自身相关的日志,包括启动、停止等,不包含任何业务日志

$worker = new Worker('text://172.16.0.10:10024');

$worker->name = 'CMSWorker';

$worker->count = 2;

//$worker->transport = 'udp';// 使用udp协议,默认TCP

$worker->onWorkerStart = function($worker){

echo "Worker starting...\n";

};

$worker->onMessage = function($connection, $data){

static $request_count = 0;// 已经处理请求数

var_dump($data);

$connection->send("hello");

/*

* 退出当前进程,主进程会立刻重新启动一个全新进程补充上来,从而完成进程重启

*/

if(++$request_count >= MAX_REQUEST){// 如果请求数达到1000

Worker::stopAll();

}

};

$worker->onBufferFull = function($connection){

echo "bufferFull and do not send again\n";

};

$worker->onBufferDrain = function($connection){

echo "buffer drain and continue send\n";

};

$worker->onWorkerStop = function($worker){

echo "Worker stopping...\n";

};

$worker->onError = function($connection, $code, $msg){

echo "error $code $msg\n";

};

// 运行worker

Worker::runAll();

}

}

修改Workerman/Worker.php源码,找到parseCommand()方法,workerman版本3.3.2的话,在586行,修改命令行检测语法:

protected static function parseCommand()

{

global $argv;

// Check argv;

$start_file = $argv[0];

if (!isset($argv[2])) {

exit("Usage: php yourfile.php Controller/Action {start|stop|restart|reload|status|kill}\n");

}

// Get command.

$command = trim($argv[2]);

$command2 = isset($argv[3]) ? $argv[3] : '';

.....

}

OK,此时大功告成。

Linux命令行下运行,注意,此处要切换到thinkphp根目录下面

/usr/local/php/bin/php index.php Workerman/index start

查看运行状态:

/usr/local/php/bin/php index.php Workerman/index status

此处命令行可以放入全局变量中,直接以php运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值