tp6 workerman

一:tp6单应用与多应用。

目录结构 · ThinkPHP6.0完全开发手册 · 看云

二:tp6打开错误提示。

config->app.php->'show_error_msg'

三:tp6去掉必须带index.php。

 修改public/.htaccess文件为如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
 
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

默认是:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

四:tp6多应用。

tp6安装后默认采用的是 单应用模式部署

单应用模式的优势是简单灵活,URL地址完全通过路由可控。配合路由分组功能可以实现类似多应用的灵活机制。

而我个人比较喜欢 多应用模式部署,比如说:对于网站来说,有前台和后台方面的应用。这个时候采用多应用模式部署的话,那在以后的开发和维护起来就更加地方便了。

快速生成应用

如果使用了多应用模式,可以快速生成一个应用,例如生成demo应用的指令如下:

php think build demo

你会发现:上面的命令好像执行不了。是因为你没有安装多应用模式扩展think-multi-app

安装think-multi-app扩展:

composer require topthink/think-multi-app

注意:执行上面的命令时,一定要在你的应用根目录下执行。也就是有一个think的文件的目录下执行。

安装成功之后,再次执行 php think build demo

这次执行成功后,你会发现你的应用根目录里的app文件夹里多了一个demo的文件夹。

上面的生成的应用是 demo,比如你想生成后台的应用admin,前台的应用home,api方面的应用api。主要还是看个人是什么需求再去生成相应的应用。

查看生成的应用目录

五:tp6开启强制路由。

1:不开启强制路由可以直接访问存在的方法。

如下图:可127.0.0.1/index/index/index 直接访问。

2:开启强制路由必须在路由中定义,否则报错。

 

3:定义路由方式。

1):在应用中新建route文件夹。新建admin.php。任意 名字都可以。

2):

Route::get('index', 'admin/index/index');
//Route::get('index', 'index/index');  省略admin也可以。

请求地址为 ,需加上应用名admin。

六:View显示。

需要使用,安装。

composer require topthink/think-view

安装路径:

不安装会报错。

还需要引入View类。

<?php
declare (strict_types = 1);//declare(strict_type=1);是php7引入的 严格类型检查模式的指定语法

namespace app\admin\controller;

use think\facade\View;

class Index
{
    public function index()
    {
        //return '您好!这是一个[admin]示例应用';
        // 不带任何参数 自动定位当前操作的模板文件
        //return View::fetch();//不指定名字,则默认用index。
        return View::fetch('index2');//指定名字
    }
}

七:静态资源加载。

    //静态资源引用,后加入
    'tpl_replace_string'  => [
        '__STATIC__'       => '/static',
        '__JS__'        => '/static/js',
        '__IMG__'       => '/static/images',
        '__FONT__'      => '/static/font'
    ]

使用:

<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="__STATIC__/js/jquery-3.6.2.min.js"></script>

<script src="__STATIC__/bootstrap-5.2.3-dist/js/bootstrap.js"></script>

<script src="__STATIC__/js/toastr.js"></script>

<!-- 弹窗-->
<script src="__STATIC__/layer/layer.js"></script>

八:数据库连接。

九:tp6 workerman

1):直接使用官方文档,安装tp6,workerman。

2):workerman安装完毕后,在vendor文件夹下。

3):workerman更简单。swoole更高效。workerman是php写的。swoole是c写的。

1:安装workerman

通过 composer 安装

composer require topthink/think-worker

2:workerman测试

服务端测试代码:

<?php
namespace app\http;

use think\worker\Server;
use think\facade\Session;

class Worker extends Server{

    protected $socket = 'websocket://0.0.0.0:2345';

    public function onMessage($connection, $data)
    {
        echo "onMessage\n";
        $connection->send("收到啦!!!!!");
    }

    /**
     * 当连接建立时触发的回调函数
     * @param $connection
     */
    public function onConnect($connection)
    {
        echo "onConnect\n";
        $connection->send("连接成功");
    }

    /**
     * 当连接断开时触发的回调函数
     * @param $connection
     */
    public function onClose($connection)
    {
        echo "close\n";
    }

    /**
     * 当客户端的连接上发生错误时触发
     * @param $connection
     * @param $code
     * @param $msg
     */
    public function onError($connection, $code, $msg)
    {
        echo "error $code $msg\n";
    }

    /**
     * 每个进程启动
     * @param $worker
     */
    public function onWorkerStart($worker)
    {
        echo "onWorkerStart\n";
    }

}

客户端测试代码:
 

<html>
<head>
  <meta charset="utf-8" />
  <title>网页版群聊</title>
</head>
<body>
<script>
  ws = new WebSocket("ws://192.168.0.145:2345");
  ws.onopen = function() {
    console.log("连接成功");
    ws.send('tom');
    console.log("给服务端发送一个字符串:tom");
  };
  ws.onmessage = function(e) {
    console.log("收到服务端的消息:" + e.data);
  };
</script>
</body>
</html>

测试发现,关闭浏览器会触发close事件。

但直接断网,不会触发close事件。

workerman和

参考文档:

序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn)

ThinkPHP6多应用模式配置经验总结_从删库到跑路养成记的博客-CSDN博客_thinkphp6 多应用

ThinkPHP6之多应用模式 - 走看看

分析TP6的多应用与TP5的区别 – 智云一二三科技

tp6+Workerman_北寻的博客-CSDN博客_tp6 workerman

使用TP6+Workerman实现私聊(类似QQ)、实时聊天(2、搭建workerman)_筱宇***的博客-CSDN博客_tp6 聊天

Thinkphp6 WorkerMan中如何向某个特定客户端发送数据-趙哥博客

Thinkphp 使用Workerman 聊天室_杰姆小生的博客-CSDN博客_thinkphp6workerman聊天

php在线客服:TP6+workerman实现_Ben Taotao的博客-CSDN博客_tp6 workerman

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值