mysql异步非阻塞方式_PHP异步非阻塞之路(示例代码)

需求

一个简单的需求,提交大量数据到远程服务器,此时并不需要等待返回。

另一个需求,获取API数据,同时查询数据库,并行处理,加快响应速度。

配置问题

set_time_limit

ignore_user_abort

fastcgi_finish_request

只是结束会话后继续执行,并没有并发,勉强非阻塞

curl

fsockopen

坑最多的地方

首先,fwrite并不都是成功的,返回写入的字节数,并不是全部

其次,PHP的bug,stream_set_blocking设置非阻塞,须等待才能写入,7.0.x以上才解决,https://github.com/php/php-src/pull/2330

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error: 1409F07F: SSL routines: SSL3_WRITE_PENDING: bad write retry

再次,Keep-Alive的坑,需要比对Content-Length和返回长度,然后断开

最后,Transfer-Coding的值如果为Chunked,需要拼接返回结果

pfsockopen,需要使用Keep-Alive,并且不能close链接

其他

异步框架:swoole。。。

计划任务:redis+crond

pcntl:开启新进程

popen:调用外部程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值