执行任务事件 function onTask(\swoole_server $server, $taskId, $workerId,$callBackObj); 在task_worker进程内被调用,可以用以下方法向task_worker进程投递新的任务 AsyncTaskManager::getInstance()->add(Runner::class); 当前的Task进程在调用onTask回
响应事件 function onResponse(Request $request,Response $response); 在任何的控制器响应结束后,均会执行该事件,该事件预留于做分析记录。例如结合onRequest事件做慢日志记录。 function onRequest(Request $request, Response $response) { // TODO: Implement
请求分发事件 function onDispatcher(Request $request,Response $response,$targetControllerClass,$targetAction); HTTP请求进来后,easySwoole会对请求进行解析以及分发,当找到对应的控制器后将会执行本事件 注意: 如果请求无法解析到对应的控制器,或控制器不是继承自AbstractControll
收到请求事件 function onRequest(Request $request,Response $response); 当easySwoole收到任何的HTTP请求时,均会执行该事件。该事件可以对HTTP请求全局拦截。 $sec = new Security(); if($sec->check($request->getRequestParam())){ $response->wri
服务异常事件 function onWorkerError(\swoole_server $server,$worker_id,$worker_pid,$exit_code); 当worker/task_worker进程发生异常后会在Manager进程内回调此函数 $worker_id是异常进程的编号 $worker_pid是异常进程的ID $exit_code退出的状态码,范围是 1 ~255
服务退出事件 function onWorkerStop(\swoole_server $server,$workerId); 此事件在worker进程终止时发生。在此函数中可以回收worker进程申请的各类资源 $workerId是一个从0-$worker_num之间的数字,表示这个worker进程的ID,$workerId和进程PID没有任何关系 进程异常结束,如被强制kill、致命错误、co
服务启动事件 function onWorkerStart(\swoole_server $server,$workerId); 此事件在Worker进程/Task进程启动时发生。这里创建的对象可以在进程生命周期内使用,需要注意的是 Task进程也会触发此事件 发生致命错误或者代码中主动调用exit时,Worker/Task进程会退出,管理进程会重新创建新的进程,也会触发本事件 onWorkerS
事件类似ThinkPHP的行为或者钩子,是框架在执行过程中预留的开发者执行一些业务逻辑的入口,easySwoole预留了多种全局事件入口,以方便用户更加自由地使用easySwoole框架 其中除框架预处理,其余的事件入口均在Conf/Event.php下,其中Event类必须继承CoreAbstractInterfaceAbstractEvent类 以下为框架提供给开发者处理业务逻辑的入口: 事件
因为有的同学可能会选择其他的 Linux 的发行版来学习本课程,所以这节课我们也列举了如何在 Ubuntu 下安装 Docker 的方法。对于初次接触 Linux 的用户,我们会提供尽可能详细的注释来告知每个命令的作用,放松心态,跟着做就可以了。 Tips:由于 Docker 安装需要比较高的系统权限,请在安装前与系统管理员确认,或者使用 root 权限进行安装。 1. CentOS 安装 Doc
通过前面的小节学习,我们已经对 Linux 操作系统有了简单的了解,同时也在 Windows 下安装了虚拟机软件 VMware ,那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本,本小节以 CentOS 8 为例来介绍 Linux 操作系统的安装步骤。学习本小节之后读者可以按照本小节的介绍步骤,安装其他的 Linux 操
Rust 的标准库,有一个 prelude 子模块,这里面包含了默认导入(std 库是默认导入的,然后 std 库中的 prelude 下面的东西也是默认导入的)的所有符号。 大体上有下面一些内容: std::marker::{Copy, Send, Sized, Sync} std::ops::{Drop, Fn, FnMut, FnOnce} std::mem::drop std::boxed
一些MySQL发布对mysql数据库中的系统表的结构进行了更改,添加了新权限或特性。当你更新到新版本MySQL,你应同时更新系统表,以确保它们的结构最新。首先备份mysql数据库,然后按照下面的程序操作。 在Unix或Unix类系统中,运行mysql_fix_privilege_tables脚本来更新系统表: shell> mysql_fix_privilege_tables 你必须在服务器运行时
作者:Adam Marcus 译 / iammutex 与本书中提到的其它主题不同,NoSQL不是一个工具,而是由一些具有互补性和竞争性的工具组成的一个概念,是一个生态圈。这些被称作NoSQL的工具,在存储数据的方式上,提供了一种与(基于SQL语言的)关系型数据库截然不同的思路。要想了解NoSQL,我们必须先了解现有的这些工具,去理解那些引导它们开拓出新的存储领域的设计思路。 如果你正在考虑使用N
目录 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ext2文件系统 2.1. 总体存储布局 2.2. 实例剖析 2.3. 数据块寻址 2.4. 文件和目录操作的
#include <stdio.h> int main(void) { char p1[] = "Sam"; char *p2 = "Bob"; printf("p1 is %s, p2 is %s\n", p1, p2); return 0; } 技巧 使用gdb调试程序时,可以使用catch syscall [name | number]为关注的系统调用设