Welcome to

Mr.Xiong

Home / ThinkPHP / TP与Workerman 源码整合

TP与Workerman 源码整合

一、Workerman 源码调整

下载 Workerman, 放入 TP 框架当中,注意与 Home模块 平级,视 Workerman 为一个模块。接着修改 Worker 类中的 parseCommand() 方法,代码如下:

global $argv;
// Check argv;
$start_file = $argv[0];
$available_commands = array(
   'start',
   'stop',
   'restart',
   'reload',
   'status',
   'connections',
);
$usage = "Usage: php yourfile.php {" . implode('|', $available_commands) . "} [-d]\n";
if (!isset($argv[1]) || !in_array($argv[1], $available_commands)) {
   exit($usage);
}
// Get command.
$command  = trim($argv[1]);
$command2 = isset($argv[2]) ? $argv[2] : '';

以上代码替换为:

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] : '';

二、Tp 源码调整

在 Home 模块当中,正常建立 Workerman 控制器并在文件开始处引入一个命名空间,功能是用于引入Workerman 类代码如下:

use Workerman\Worker;

通过文件引用将 Workerman 加载到方法里并编写 workerman 代码如下:

require_once '/home/wwwroot/default/Application/Workerman/Autoloader.php';

Workerman 控制器 index 方法代码如下:

        $worker = new Worker('http://0.0.0.0:2345');  
        $worker->onMessage = function($connection, $data){
                     static $request_count = 0;// 已经处理请求数
            var_dump($data);
            $connection->send("hello");
            
            /*
            * 退出当前进程,主进程会立刻重新启动一个全新进程补充上来,从而完成进程重启
            */
            if(++$request_count >= MAX_REQUEST){// 如果请求数达到1000
                            Worker::stopAll();
            }
        };
        
        Worker::runAll();

二、Linux 运行 Tp 中 Workerman

linux命令运行的代码如下:

php index.php Home/Workerman/index start

此时,你已经可以使用 Workerman 操作数据库了。

Finally,谢谢大家的阅读!祝每天开心~
版权声明:本文为博主半原创文章,未经博主允许不得转载。

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

雄心勃勃但谦卑温逊!

>> <<