您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman常用组件-MySQL组件-workerman之使用Workerman-MySQL - 具体MySQL的Connection用法-複雜查詢
发布时间:2021-12-22 00:04:04编辑:雪饮阅读()
實例
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onWorkerStart = function($worker)
{
global $db;
// 初始化db连接
$db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'xy', 'xy', 'workerman');
};
$worker->onMessage = function(TcpConnection $connection, $data)
{
global $db;
$response=[];
//普及下limit與offset的區別:
/*
* 当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量
* 当 limit后面跟一个参数的时候,该参数表示要取的数据的数量
*当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量
* offset貌似比較老的特性,現在好像不常見了
* */
// 复杂查询
$response["Complicated_1"] =$db->select('*')->from('phome_ecms_news_data_1')->innerJoin('phome_ecms_news','phome_ecms_news_data_1.id = phome_ecms_news.id')->where('onclick > :onclick')->groupBy(["phome_ecms_news.classid"])->having('username="雪饮"')->orderByASC(["truetime"])
->limit(100)->offset(5)->bindValues(["onclick"=>13]);
$response["Complicated_2"] =$db->select('*')->from('phome_ecms_news_data_1')->innerJoin('phome_ecms_news','phome_ecms_news_data_1.id = phome_ecms_news.id')->where('onclick > :onclick')->groupBy(["phome_ecms_news.classid"])->having('username="雪饮"')->orderByDESC(["truetime"])
->limit(100)->offset(5)->bindValues(["onclick"=>13]);
// 等价于
$response["Complicated_3"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime LIMIT 100 OFFSET 5');
//或這個(mysql默認升序)
$response["Complicated_4"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime asc LIMIT 100 OFFSET 5');
//或者下面這個降序
$response["Complicated_5"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime desc LIMIT 100 OFFSET 5');
$connection->send(json_encode($response));
};
//上面的phome_ecms_news.classid可以完全寫成classid,只是我這裏由於兩個表都有classid字段會導致分組時字段不明確,這個大家都懂的哈,都是大神,這裏應該是多次一舉了,這個提示。
// 运行worker
Worker::runAll();
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onWorkerStart = function($worker)
{
global $db;
// 初始化db连接
$db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'xy', 'xy', 'workerman');
};
$worker->onMessage = function(TcpConnection $connection, $data)
{
global $db;
$response=[];
//普及下limit與offset的區別:
/*
* 当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量
* 当 limit后面跟一个参数的时候,该参数表示要取的数据的数量
*当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量
* offset貌似比較老的特性,現在好像不常見了
* */
// 复杂查询
$response["Complicated_1"] =$db->select('*')->from('phome_ecms_news_data_1')->innerJoin('phome_ecms_news','phome_ecms_news_data_1.id = phome_ecms_news.id')->where('onclick > :onclick')->groupBy(["phome_ecms_news.classid"])->having('username="雪饮"')->orderByASC(["truetime"])
->limit(100)->offset(5)->bindValues(["onclick"=>13]);
$response["Complicated_2"] =$db->select('*')->from('phome_ecms_news_data_1')->innerJoin('phome_ecms_news','phome_ecms_news_data_1.id = phome_ecms_news.id')->where('onclick > :onclick')->groupBy(["phome_ecms_news.classid"])->having('username="雪饮"')->orderByDESC(["truetime"])
->limit(100)->offset(5)->bindValues(["onclick"=>13]);
// 等价于
$response["Complicated_3"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime LIMIT 100 OFFSET 5');
//或這個(mysql默認升序)
$response["Complicated_4"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime asc LIMIT 100 OFFSET 5');
//或者下面這個降序
$response["Complicated_5"]=$db->query('SELECT * FROM `phome_ecms_news_data_1` INNER JOIN `phome_ecms_news` ON `phome_ecms_news_data_1`.`id` = `phome_ecms_news`.`id`
WHERE onclick > 13 GROUP BY phome_ecms_news.classid HAVING username="雪饮" ORDER BY truetime desc LIMIT 100 OFFSET 5');
$connection->send(json_encode($response));
};
//上面的phome_ecms_news.classid可以完全寫成classid,只是我這裏由於兩個表都有classid字段會導致分組時字段不明確,這個大家都懂的哈,都是大神,這裏應該是多次一舉了,這個提示。
// 运行worker
Worker::runAll();
實例運行:
[root@localhost www.fpm.com]# /usr/local/php734/bin/php channelServer.php start
Workerman[channelServer.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.22 PHP version:7.3.4
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root none websocket://0.0.0.0:8484 1 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
儅有客戶端連接后並觸發了咱們的onMessage事件時,若你配置了sql追蹤(sql常規日志以mysql5.7配置則如:log-raw=true
general_log = ON
general_log_file=D:\phpstudy_pro\Extensions\MySQL5.7.26\mysql.log),則可以看到如下:
关键字词:workerman,MySQL,组件,Connection,複雜查詢
上一篇:workerman常用组件-MySQL组件-workerman之使用Workerman-MySQL - 具体MySQL的Connection用法-獲取單個值
下一篇:workerman常用组件-MySQL组件-workerman之使用Workerman-MySQL - 具体MySQL的Connection用法-插入
相关文章
- workerman常用组件-MySQL组件-workerman之使用Workerm
- workerman常用组件-MySQL组件-workerman之使用Workerm
- workerman常用组件-MySQL组件-workerman之使用Workerm
- workerman常用组件-MySQL组件-workerman之使用Workerm
- workerman常用组件-MySQL组件-workerman之使用Workerm
- workerman常用组件-MySQL组件-workerman之安装 Worker
- workerman常用组件-MySQL组件-workerman之mysql-pdo_m
- workerman常用组件-FileMonitor文件监控组件
- workerman常用组件-channel分佈式通訊組件-channelCli
- workerman常用组件-channel分佈式通訊組件-channelCli