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语句,书写格式应尽量规范。