swoole 2 基础概念与长连接

1. 同步与异步

https://www.cnblogs.com/orez88/articles/2513460.html
对于程序的执行流程来说,一般是从上而下的方式来执行, 除非遇到流程控制语句会有一些变化, 但是原则上都会遵循这个原则; 对于PHP来说在单线程的模式下那么一个进程在执行PHP代码的时候就会从第一行执
行到最后一行,那么这个过程我们就可以认为这是同步的,如果中间遇到了sleep()就不得不等待一下执行; 这种模式基本上可以满足于很多的应用场景;
但是并不是绝对的比如:像微信 在网站上登入的时候就会发一条信息在自己的微信账号上提醒你登入了 , 再比如一份订单生成了之后对于用户来说并不会立即收到货,而这个发货的过程我们就可以做成异步的任务由
库存模块处理 等等操作;
 

2. 阻塞与非阻塞

阻塞:意思就是在哪里等待,要等别人执行完成才能往下去执行;
非阻塞:就是程序可以不用等待执行的结果, 就可以进行下一步的操作;
 
那么在这个过程中对于对于order.php来说, 在我们向控制台输入了一个任务之后
 
 
程序就在等待任务下一个信息的输入,那么这个过程我们就可以认为它是同步阻塞的; 但是对于inventory.php来说,他并不需要等待order.php是否执行完才执行
 
对于它来说执行需要去看task.txt是否存在需要完成的任务,那么这个时候它相对于 order.php是一个异步非阻塞的;
对于阻塞与非阻塞的专有称呼有,同步阻塞,同步非阻塞,异步阻塞,异步非阻塞;而实际上我们并不需要关注同步非阻塞与异步阻塞,同步非阻塞在实现的过程中会存在一些复杂度可以采用异步非阻塞的方式巧妙地
解决好;而异步阻塞其实本身意义就并不大
 
 

3. swoole中的异步回调

在swoole中存在这异步的回调模块-》 http://wiki.swoole.com/wiki/page/p-async.html 不过这个回调模块,在4.3版本中讲所有异步客户端模块已经迁移出去,在ext-async扩展中了,推荐使用的是协程客户端;
当然我们可以去github上下载该扩展进行编译安装 https://github.com/swoole/ext-async, 这里我下载的是zip包

[root@localhost file]# ls ext-async-master.zip swoole-src-4.4.12 swoole-src-4.4.12.tar.gz
[root@localhost file]# unzip ext-async-master.zip
[root@localhost file]# ls ext-async-master ext-async-master.zip swoole-src-4.4.12 swoole-src-4.4.12.tar.gz
[root@localhost file]# cd ext-async-master
[root@localhost ext-async-master]# phpize checking target system type... x86_64-unknown-linux-gnu configure: error: Cannot find php-config. Please use --with-php-config=PATH
[root@localhost ext-async-master]# find / -name php-config /www/server/php/72/src/scripts/php-config /www/server/php/72/bin/php-config [root@localhost ext-async-master]# ./configure --with-php-config=/www/server/php/72/bin/php-config [root@localhost ext-async-master]# make -j 4
[root@localhost ext-async-master]# sudo make install Installing shared extensions: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/
[root@localhost ext-async-master]# find / -name php.ini /www/server/php/72/etc/php.ini
[root@localhost ext-async-master]# vi /www/server/php/72/etc/php.ini 添加 extension=swoole_async.so
[root@localhost ext-async-master]# /etc/rc.d/init.d/php-fpm-72 restart
[root@localhost ext-async-master]# php -m | grep swoole swoole swoole_async

原文地址:https://www.cnblogs.com/weixinsb/p/15541084.html