非阻塞 php,PHP异步非阻塞之路
需求
一個(gè)簡單的需求,提交大量數(shù)據(jù)到遠(yuǎn)程服務(wù)器,此時(shí)并不需要等待返回。
另一個(gè)需求,獲取API數(shù)據(jù),同時(shí)查詢數(shù)據(jù)庫,并行處理,加快響應(yīng)速度。
配置問題
set_time_limit
ignore_user_abort
fastcgi_finish_request
只是結(jié)束會(huì)話后繼續(xù)執(zhí)行,并沒有并發(fā),勉強(qiáng)非阻塞
curl
fsockopen
坑最多的地方
首先,fwrite并不都是成功的,返回寫入的字節(jié)數(shù),并不是全部
其次,PHP的bug,stream_set_blocking設(shè)置非阻塞,須等待才能寫入,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,需要拼接返回結(jié)果
pfsockopen,需要使用Keep-Alive,并且不能close鏈接
其他
異步框架:swoole。。。
計(jì)劃任務(wù):redis+crond
pcntl:開啟新進(jìn)程
popen:調(diào)用外部程序
最終還是使用了popen開啟新進(jìn)程
總結(jié)
以上是生活随笔為你收集整理的非阻塞 php,PHP异步非阻塞之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pandas python groupb
- 下一篇: php语法高亮编辑器,最新PHPCMS