swoole管理进程
小案例:修改某个进程的名字?
未改之前
案例代码
<?php
//修改进程名称
swoole_process::name('php_process_newname');
sleep(1000);
修改后
小案例:创建一个子进程,把其名字设置为worker-process?
案例代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/11/20
* Time: 17:59
*/
//修改主进程进程名称
swoole_set_process_name('master-process');
//创建子进程,设置其名字为worker-process
$worker = new swoole_process(function (){
//设置其名字
swoole_set_process_name('worker-process');
//子进程建立成功后,执行复杂逻辑(比如:运算)
sleep(1000);
});
//启动子进程
$worker->start();
//等待子进程执行完,主进程再推出
swoole_process::wait();
效果
Swoole常用的配置选项
调整swoole的worker进程的数量,worker进程的数量越多,这个能同时处理的并发量更高
//创建swool的http服务器对象
$serv = new swoole_http_server('0.0.0.0',8000);
//修改worker数量为10个
$serv->set([
'worker_num'=>10,
]);
调整这个swoole的task进程的数量,这个task进程的数量越多,这个能同时处理的任务就更多
//1设置task进程数量-->2注册onTask/onFinish2个事件回调函数[两步走]
//创建swool的http服务器对象
//创建swool的http服务器对象
$serv = new swoole_http_server('0.0.0.0',8000);
//修改worker数量为10个
$serv->set([
'worker_num'=>10,
'task_worker_num'=>50,//设置task进程数量
]);
//当客户端连接到服务器端时回调
$serv->on('connect',function (swoole_server $serv, $fd, $from_id){
$serv->task("this id data");
});
//当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
$serv->on('request', function($request,$response){
//$request包含这个请求的所有信息,比如参数
//$response包含返回给浏览器的所有信息,比如helloworld
//var_dump($request);
//var_dump($response);
//(2.3)向浏览器发送helloworld
$response->end("hello world");
});
//设置任务处理函数,某个任务被触发后执行下面的函数
$serv->on('task',function (swoole_server $serv, $task_id, $from_id, $data){
var_dump($data);
return "abc";
});
//设置任务执行完成后,返回数据的处理
$serv->on('finish',function (swoole_server $serv, $task_id, $data){
var_dump($data);
});
//启动http服务器
$serv->start();
swoole定时执行代码—毫秒级别的定时器
//场景:将一段代码延时执行
swoole_timer_after(5*1000,function (){
echo 123;
});
//场景:每隔5秒输出123
swoole_timer_tick(5*1000,function (){
echo 123;
});
异步读取文件内容
异步程序的特点就是把这个程序执行过程中的等待时间充分利用起来执行
其它的程序。
//同步读取文件
$file_content = file_get_contents('word.txt');
echo $file_content;
echo "\r\n";
echo 123;
echo "\r\n";
//异步读取文件
swoole_async_readfile('word.txt', function ($filename,$contents){
echo $filename."\r\n";
echo $contents."\r\n";
});
echo 123;
echo "\r\n";