1. 程式人生 > 其它 >swoole 2 基礎概念與長連線

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