current();
if (isset($r)) {
switch ($r[0]) {
case 'sql':
AsyncMysql::getInstance()->query($r[1],
function ($retval) use($gen) {
$gen->send($retval);
asyncCaller($gen);
});
break;
case 'dns':
swoole_async_dns_lookup($r[1],
function ($host, $ip) use($gen) {
$gen->send([$host, $ip]);
asyncCaller($gen);
});
break;
case 'lag':
swoole_timer_after($r[1],
function () use($gen, $r) {
$gen->send('lag ' . $r[1] . 'ms');
asyncCaller($gen);
});
break;
default:
$gen->send('no method');
asyncCaller($gen);
break;
}
}
}
asyncCaller(syncCode());
/**
* 异步mysql类
*/
class AsyncMysql
{
/**
* @var mysqli
*/
protected $db = null;
/**
* @var callable
*/
protected $callable = null;
public static function getInstance()
{
static $instance = null;
return isset($instance) ? $instance : ($instance = new self());
}
public function __construct()
{
$this->db = new mysqli('127.0.0.1', 'root', '123456', 'mysql');
swoole_event_add(swoole_get_mysqli_sock($this->db), [$this, 'onQuery']);
}
public function onQuery($db_sock)
{
$res = $this->db->reap_async_query();
call_user_func($this->callable, $res->fetch_all(MYSQLI_ASSOC));
}
/**
* @param string $sql
* @param callable $callable
*/
public function query($sql, callable $callable)
{
$this->callable = $callable;
$this->db->query($sql, MYSQLI_ASYNC);
}
} 0
0
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。
2
2026.02.12
本专题全面整理了Yandex搜索引擎的官方入口信息,涵盖国际版与俄罗斯版官网访问方式、网页版直达入口及免登录使用说明,帮助用户快速、安全地进入Yandex官网,高效使用其搜索与相关服务。
594
2026.02.11
本专题系统整理了虫虫漫画官网及网页版最新入口,涵盖免登录观看、正版漫画全集在线阅读方式,并汇总稳定可用的访问渠道,帮助用户快速找到虫虫漫画官方页面,轻松在线阅读各类热门漫画内容。
91
2026.02.11
本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。
7
2026.02.11
本专题聚焦 Rust 语言的异步编程模型,深入讲解 async/await 机制与 Tokio 运行时的核心原理。内容包括异步任务调度、Future 执行模型、并发安全、网络 IO 编程以及高并发场景下的性能优化。通过实战示例,帮助开发者使用 Rust 构建高性能、低延迟的后端服务与网络应用。
1
2026.02.11
本专题面向 Java 后端开发者,系统讲解如何基于 Spring Boot 与 MyBatis Plus 构建高效、规范的企业级应用。内容涵盖项目架构设计、数据访问层封装、通用 CRUD 实现、分页与条件查询、代码生成器以及常见性能优化方案。通过完整实战案例,帮助开发者提升后端开发效率,减少重复代码,快速交付稳定可维护的业务系统。
8
2026.02.11
本专题汇总了包子漫画官网和网页版入口,提供最新章节抢先看方法、正版免费阅读指南,以及稳定访问方式,帮助用户快速直达包子漫画页面,无广告畅享全集漫画内容。
210
2026.02.10
本专题汇总了MC.JS官网入口和网页版快速畅玩方法,提供免安装访问、不同版本(1.8.8、1.12.8)在线体验指南,以及正版网页端操作说明,帮助玩家轻松进入MC.JS世界,实现即时畅玩与高效体验。
108
2026.02.10
热门下载
相关下载
精品课程


