PHP Swoole扩展使用过程中有些事项需要注意下。
以下是本人在实战过程中踩过的坑。
-
Redis/MySQL等协程客户端须在
go
函数中使用,可用于处理并发事务 -
原生的
sleep/usleep
等函数会造成主进程阻塞,需将其放至go
函数中,由Swoole改写的sleep/usleep
等函数来调度。 -
并发协程同时执行的个数需控制,不然会造成连接数过多、同时打开文件过多等问题。
-
MySQL协程的
insert
语句,生成的新记录的自增ID,可通过两种方式获取
# 方式1
$last_id = $swoole_mysql->query("select LAST_INSERT_ID() as last_id")[0]['last_id'];
# 方式2,推荐
$last_id = $swoole_mysql->last_id;
- MySQL协程的
query
方法,执行的是原生SQL语句,书写格式应尽量规范。