Swoole? ?? ??? ???? ???? ?????? ????? ??? ??? ??? ???? ?? ???? ????. Swoole? ???? ???? ???? ??? ??? ?? ???? ??? ? ?? ??? ?? ??? ?? ? ?????. ? ????? Swoole?? ?? ??? ?? ???? ???? ??? ???? ???? ?? ??? ?????.
1. ????? ?????? ???? ??? ??? ?? ????, ??? ???? ?? ? ??? ???? ??? ?? ?????. Swoole??? ???? ???? ?????? ??, Redis ?? ?? ?? I/O ???? ???? ?? ??? ??? ? ????. ???? I/O ??? ???? ??? ??? ???? ??? ?? ???? ?? ??? ??? ??? ??? ? ????.
2. Swoole? ??? ??
Swoole? ?? 1.8.0?? ??? ??? ??????. ? ??? ???, go, defer, ?? ?? ??? ??? ????? ???? ??? API? ?????.
1. ???
???? ??? ????? ??? ? ?? ????. ?:
function test() { echo "start "; Coroutine::sleep(1); echo "end "; } Coroutine::create('test'); echo "hello ";
? ???? ??? ??? ????? ???? Coroutine::create? ?????. () ???? ?????. ?????? Coroutine::sleep()? ???? I/O ??? ????????. ? ??? ???? ???? 1? ?? ?? ??? ?? ?? ???? ???? "end"? ?????. ????? ???? ??? ??? ???? "hello"? ?????.
2. go
go? ??? ????? ??? ? ?? ??? ?? ?????. ?:
go(function(){ echo "hello "; Coroutine::sleep(1); echo "world "; }); echo "start ";
? ????? go()? ???? ?? ??? ?????. ????? "hello"? ???? 1? ?? ?? ? "world"? ??? ?????. ????? "start"? ?????, ?? ???? ???? ? ??? ??? ????? ?? ?????.
3. defer
defer? ???? ??? ?? ? ?????? ?? ??, ??? ?? ?? ?? ?? ?? ??? ??? ? ????. ???? ??? ????.
go(function(){ $db = new Redis(); $db->connect('127.0.0.1', 6379); defer(function() use ($db) { $db->close(); }); $db->set('key', 'value'); Coroutine::sleep(1); $value = $db->get('key'); echo $value." "; });
? ???? defer? ?????. ???? ? Redis ??? ????. defer? ???? ??? ???? ??? ? ??? ?? ?? ???? ?? ?? ??? ? ????.
4. Channel
channel? Swoole?? ???? ???? ?? ??????, ??? ?? ?? ??? ?? ??? ?????.
$chan = new CoroutineChannel(1); go(function() use($chan) { $data = Coroutine::getuid(); $chan->push($data); }); $data = $chan->pop(); echo $data." ";
? ???? ??? 1? ??? ?? ?? ???? ???? ??? ??? ?? ???? ??? ?? ???? ??? ?????. ??? ???? ??? ?? ???? ???? ?? ?? ??? ??? ? ????.
3. ??? ?? ??
?? ???? ??? ?????? ??? ??? ?? ??? ?? ??? ?? ??? ?? ? ?? ?? ??? ?? ?????. Swoole??? Redis? ?? ???? ??????? ???? ??? ???? ??? ???? ???? ??? ??? ??? ???? ? ????.
1. Redis? ??
Swoole? ??? Redis ?????? ???? Redis ??????? ???? ??? ?????.
$redis = new SwooleCoroutineRedis(); $redis->connect('127.0.0.1', 6379); go(function () use ($redis) { $redis->set('name', 'Bob'); $name = $redis->get('name'); echo "name=$name "; }); go(function () use ($redis) { $redis->set('age', 18); $age = $redis->get('age'); echo "age=$age "; }); SwooleCoroutine::sleep(1);
? ???? Swoole? ??? Redis ?????? ???? Redis ??????? ?????. ?? ?? ??? ??? ?? ? ?? ??? ???? ??? ??? ?? ??? ??????. ????? SwooleCoroutine::sleep()? ???? ???? ??? ??? ?? ?? ?? ?????. ??? ???? ?? ???? ??????? ???? ??? ? ????.
2. ?? ??
Redis? ??? ? ??? ?? ??? ???? ??? ? ????. ?? ?? ??? ???? ????? set() ???? ??? ? ????.
$redis->set('key', 'value');
??? 'key'? ??? ???? ??? 'value'? ??? ???? ????. ??? ???? ???? get() ???? ??? ? ????.
$value = $redis->get('key');
?????? ? ??? ???? ??? ??? ? ????. ?:
go(function() use($redis){ $redis->set('key1', 'value1'); $value1 = $redis->get('key1'); echo "key1=$value1 "; }); go(function() use($redis){ $redis->set('key2', 'value2'); $value2 = $redis->get('key2'); echo "key2=$value2 "; }); SwooleCoroutine::sleep(1);
? ???? ? ?? ???? ?? ? ?? ??? ???? ???? ?? ?? ??? ??????. ?? ???? ??? ???? ??? ??? ???? ? ??? ?????.
3. ?? ? MySQL ??
?? ?? ??????? ????? ???? ???? ?? ??, ??? ??? MySQL?? ?? ?? ??? ?? ??? MySQL? ???? ???. Swoole? ??? ????? ??? ??? ??? ???? ? ??? ??? ? ????.
$redis = new SwooleCoroutineRedis(); $redis->connect('127.0.0.1', 6379); $mysql = new SwooleCoroutineMySQL(); $mysql->connect([ 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'root', 'password' => '123456', 'database' => 'test', ]); go(function() use($redis, $mysql) { $name = $redis->get('name'); if($name === false) { $result = $mysql->query('select * from user where id=1'); if(!empty($result)) { $name = $result[0]['name']; $redis->set('name', $name); } } echo "name=$name "; }); go(function() use($redis, $mysql) { $age = $redis->get('age'); if($age === false) { $result = $mysql->query('select * from user where id=1'); if(!empty($result)) { $age = $result[0]['age']; $redis->set('age', $age); } } echo "age=$age "; }); SwooleCoroutine::sleep(1);
? ???? ??? ?? ??? ?????. ??? ?? ?? ?? ???? ???? ???? ?????. , MySQL?? ???? ????. MySQL? ??? ? ??? ??? ???? ???? ??? ?? ???? ?????. ????? ? ?? ??? ???? ???? ?? ?? ??? ??????.
?? Swoole?? ?? ??? ?? ???? ???? ???? ?? ?????. ???? ?? ??? ???? ??? ??? ???? ? ??? MySQL? ?? ?? ??? ??? ? ????. ?? ????? ?? ???? ???? ?? ??? ?? ??? ??? ? ? ????.
? ??? Swoole? ?? ??: ?? ??? ???? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Laravel?? Swoole ???? ???? ?? ?? ??? ??? ??? ? ????. ??? ??? ????. ?? ??: ?? ??? ??? ??? ? ????. ???: Linux epoll ??? ????? ???? ??? ????? ?????. ?? ??? ??: ? ?? ?? ???? ?????. ??? ??: Laravel ?????? ???? ???? ??? ?????.

Go?? ??? ??? ??? ??-?? ??? ????. ?? ???? ?? ???? ????, ?? ???? ?? ???? ??? ???? ? ??? ? ??? ??? ??????. go ???? ???? ?? ???? ????, ?? ???? ?? ?? ?? ??? ??? ?? ?????. ?? ???? ?? ?? ???? ???? ?? ????? ???? ??? ?? ?? sync.WaitGroup? ?? ?? ???? ??? ??? ??? ? ????.

Swoole? Workerman? ?? ??? PHP ?? ????????. ??? ??, ??? ?? ? ????? ? ??? Swoole? ?? ?? ?? ??? ?? ???? ???? ?? ????? ?????. Workerman? ?? ???? ?? ??? ??? ???? ????? ? ??? ???? API? ?? ???? ? ??? ??? ???? ?????.

???? ???? GoAPI ???? ??? ?? ?????. ??? ??: ?? ??? ?? ?? ??? ??? ?????. ??? ??: ???? ???? ??(?: ??? ???)? ?????? ???? ?? ???? ?????. ??? ??: ???? ???? ??? ???(?: ?????? ??)? ????? ?????.

?? ??: ???: Swoole? ??? ???? ??? ???? ? ????. ?? ??: Swoole? ??? ???? ??? ????? ?? ?? ??? ? ????. ??? ??: Swoole? ???? ? ?? ???? ?????. ?? ???: Swoole? ???? ?? ?? ????? API? ?????.

Swoole ???? ?? ????? ?? ??? ?????. ??? ??? ???? PID? ?????. ???? ????? "kill -15 PID"? ??????. ???? ???? ? ??? ?? ??? ??? ???? ???? ?? ?????.

Swoole ????? ?? ???? ????? ???? ????? ??? ? ????.

???? ??? ??? ???? ?? ???? ????, ???? ???? ??? ??? Go ??? ?? ??? ?????. ?? ???? ???? ??? ??? ??? ??? ?? Go ????? ?? ?????. ???? ? ??? ??? ???? ???? ??? ????? ? ?? ???? ?? ?????.
