1.修改配置文件
创建一个数据库,修改config/database.php文件中的数据库配置
'default' => [
"driver" => "pdo_mysql",
"host" => "127.0.0.1",
"port" => "3306",
"dbname" => "Group",
"user" => "cm",
"password" => "123",
"charset" => "utf8",
],
...
开启config/database.php文件中的cache为redis,修改你的redis配置
//redis null
'cache' => 'redis',
'redis' => [
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'prefix' => 'group_',
'auth' => '',
//normal 正常| persistence 持久化
'connect' => 'persistence',
],
],
//进入项目根目录,执行以下命令
app/console sql:migrate
2.测试Cron,定时任务
//进入项目根目录,执行以下命令
app/cron start
查看runtime下的cron目录,会发现cron已经启动。测试任务会每分钟向数据库User表中插入10条数据
3.测试Queue,队列任务
sudo beanstalkd -l 127.0.0.1 -p 11300 -b /var/www/ &
将config/cron.php中注释的initUserForQueue任务打开
<?php
return [
'daemon' => true,
'cache_dir' => 'runtime/cron',
'class_cache' => 'runtime/cron/bootstrap.class.cache',
'log_dir' => 'runtime/cron',
'max_handle' => 30,
'tick_time' => 1000,
'job' => [
[
'name' => 'initUser',
'time' => '*/1 * * * *',
'command' => 'src\Web\Cron\InitUser',
],
],
];
//进入项目根目录,执行以下命令
app/cron restart
此时,每两分钟,cron会向数据库user表中插入300条数据,并向队列中写入修改用户密码的任务。
配置config/queue.php,启动队列服务
//进入项目根目录,执行以下命令
app/queue start
查看队列执行结果。打开数据库,user表用户的密码都被改成了password开头的字符串。
-
3.测试RPC
修改config/rpc.php
启用config/app.php 中的serviceProviders里面的RpcServiceProvider
启动rpc server
//进入项目根目录,执行以下命令
服务启动 php rpc_server.php &
服务热重启 php rpc_server.php -s reload
修改src/Web/Controller/Home/DefaultController
<?php
namespace src\Web\Controller\Home;
use Controller;
class DefaultController extends Controller
{
public function indexAction()
{
dump(\Rpc::call('User:User', 'getUser', [1]));
dump(\Rpc::service('User:User')->getUser(1));
return $this -> render('Web/Views/Default/index.html.twig');
}
}

4.测试Async
修改config/async.php
启动async server
//进入项目根目录,执行以下命令
app/async user_server
//注意如果要开启守护进程模式,不要设置swoole config的daemonize为true(相对路径会出错),应该如下:
app/async user_server &
//执行查看返回结果
php src/Async/User/clent.php
网页端测试修,改src/Web/Controller/Home/DefaultController
<?php
namespace src\Web\Controller\Home;
use Controller;
class DefaultController extends Controller
{
public function indexAction()
{
$server = 'user_server';
$cmd = "getUserInfo";
$data = [1,2,3,4,5,6,7,8,9,10];
$needRecvData = true;
$users = \Async::call($server, $cmd, $data, $needRecvData);
dump(json_decode($users, true));
return $this -> render('Web/Views/Default/index.html.twig');
}
}
