php安裝swoole
A. phpstudy怎麼安裝swoole擴展
在最後一行增加export PATH=/phpstudy/server/php/bin:$PATH
保存退出
在命令行運行 以下命令 重新載入變數sudo source /root/.bashrc
然後 執行命令phpize
顯示結果root@hainuio-X401A:~/swoole-src-swoole-1.7.9-alpha# phpize Configuring for: PHP Api Version: 20100412 Zend Mole Api No: 20100525 Zend Extension Api No: 220100525
B. thinkphp 為什麼安裝swoller擴展
thinkphp 正常情況下是不需要安裝swoole擴展的,如果採用swoole做服務或業務中用到swoole時才需要安裝,其他框架也是如此。
C. php swoole 只能運行在php-cli 環境嗎
一直想寫點Swoole的東西,畢竟它重新定義了php,卻一直不知道怎麼下手寫Swoole涉及的知識點非常多,互為表裡,每次想寫都發現根本理不出一個頭緒Swoole是一個php的擴展,它的核心目的就是解決php在實現server服務中可能遇到的一系列問題,這些問題用源生的php往往並不能很高效(執行效率)的解決,一般也不會使用php來解決,所以會有說swolle重新定義的php的說法。
其實swoole也提供了一個框架,swoole framework是基於swoole extension設計的一個框架,要用好這個框架,還是要先了解swoole extension。
擴展的英文名稱是Extension,php擴展是用C語言作為開發語言,基於Zend引擎提供的API,編譯成的一個動態庫。
如果曾經做過類似動態庫調用開發的童鞋可能會更好理解一些,例如Android中的NDK開發在php的配置文件中配置好extension的屬性後,就可以引用這個動態庫了。
也就是說,swoole本身是用C語言編寫的,它可以讓php獲得一些額外的function。
然後是運行方式,swoole的許多功能都只能運行在cli模式下,而cli模式往往是很多剛接觸swoole的phper遇到的第一個問題。
有時候其實只是需要轉變一下思路
我們現在整理一下最常見的php代碼執行方式:
安裝apache、php
配置apache對那個目錄進行php解析
用瀏覽器訪問那個目錄的php文件
更多的細節這里就不提了,畢竟我相信每個phper對這個都是很熟悉的。
但這里就開始出現了第一個問題,我們知道,php是一個腳本語言,腳本語言的核心特點在於不用編譯,隨時執行,而執行腳本的工具就是解析器,而php的解析器就是zend引擎。
嚴格來說,zend並不是唯一的選擇,不過,zend是最官方的。另外,Zend Studio和Zend Engine不是同一個東西,本文中的Zend全部指Zend Engine。
換個角度講,只要有解析器,寫好的php腳本就是可以執行的,而zend引擎與apache之間並沒有絕對的關系實際上,apahce是調用了zend對php腳本進行執行,然後將執行結果輸出給了瀏覽器所以所謂cli模式(CommandLine,命令行模式),其實就是在命令行下直接調用zend引擎對php腳本進行解析並執行,並獲得程序輸出結果的php腳本執行方式。
其實php也可以作為shell腳本來使用哦,就像bash shell一樣既然問題講清楚了,在一個系統中具體怎麼操作呢?
本文以CentOS 7.5作為系統環境,swoole是針對linux系統開發的,windows下並不適用。學習swoole的一個前題是懂得基本的linux系統使用。
當安裝好php的時候,找到php的安裝目錄,如果是默認安裝的話,可以試試whereis命令# 某種簡單的方法
whereis php
> /usr/local/bin/php;
locate whereis find這些命令都可以試試,目的是找到php然後我們來寫一個最經典的php腳本:
<?php
//vi hello_cli.php
echo 'Hello PHP Cli';
編寫純php腳本時,php標簽不要封口
然後我們在shell里執行它:
/usr/local/bin/php hello_cli.php
> Hello PHP Cli
這段代碼中的第一個php,是一個可執行文件,它接受一個php腳本文件作為輸入參數,並解析執行這個php腳本文件(通過zend)。
沒有錯,第一個cli模式下的php程序就被你執行成功了!
默認情況下,php都會被安裝在了$PATH的目錄下,那就可以直接省略路徑前綴了,下文中調用php的時候,全都省略了路徑前綴。
因為swoole是pecl的項目,所以使用pecl安裝是最簡單的方法,強烈推薦第一次接觸的童鞋先使用pecl安裝,在熟悉了swoole之後,再考慮使用編譯安裝的方式以獲取更多進階功能。
pecl這個工具基本都會被安裝在與php相同的目錄下(往往也都是$PATH目錄)pecl install swoole
執行以下命令查看是否安裝成功:
php -m | grep swoole
> swoole
如果正確的輸出了swoole,那麼恭喜你,這次安裝很成功另一個常見的比較麻煩的問題是,有些童鞋的電腦里安裝了多個php,而安裝的時候沒有正確的安裝到預期的php的擴展目錄中,就會導致無法正常工作,解決方案就是弄清楚各個php安裝目錄及配置關系,選擇正確的目錄進行安裝。
其實本文還沒正式開始介紹swoole,都是在學習swoole之前的准備工作,swoole的上手門檻比一般的php應用要高的多,如果沒有網路開發和操作系統方面的一些知識,學習它並不是一件容易的事情,學習曲線很陡峭。
這句話我在群里說了無數次
很多新手會詬病swoole的手冊寫的太模糊,其實是前置知識不足,而手冊也給出了需要的前置知識列表,以下引用至官網的手冊-學習swoole需要哪些知識?
多進程/多線程
了解Linux操作系統進程和線程的概念
了解Linux進程/線程切換調度的基本知識
了解進程間通信的基本知識,如管道、UnixSocket、消息隊列、共享內存socket
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind了解SOCKET的接收緩存區、發送緩存區、阻塞/非阻塞、超時等概念IO復用
了解select/poll/epoll
了解基於select/epoll實現的事件循環,Reactor模型了解可讀事件、可寫事件
TCP/IP網路協議
了解TCP/IP協議
了解TCP、UDP傳輸協議
調試工具
使用gdb調試Linux程序
使用strace跟蹤進程的系統調用
使用tcpmp跟蹤網路通信過程
其他Linux系統工具,如ps、lsof、top、vmstat、netstat、sar、ss等學習並理解一個新事務並不是一個容易的事情,特別對於swoole這種具備一定顛覆性的工具,要有耐心和實踐。
淡定的把手冊看完,遇到不理解的名詞學會使用搜索引擎學習,swoole的手冊其實是個大寶庫,網路開發常見的問題其實里邊都涉及到了。
D. 菜鳥問個很基礎的問題Centos怎麼安裝swoole
wget https://github.com/swoole/swoole-src/archive/swoole-1.7.6-stable.tar.gz
tar -zxvf swoole-1.7.6-stable.tar.gz
cd swoole-src-swoole-1.7.6-stable
phpize
./configure
make && make install
如果出現:Build complete.就表示安裝成功
下來修改php.ini添加swoole擴展
extension_dir = "/usr/lib64/php/moles/"這個centos里邊如果是yum安裝的php,擴展默認就在這個目錄,可以不配置
添加extension=swoole.so
重啟php-fpm: /etc/init.d/php-fpm restart
在phpinfo里能到swoole就表示成功了,下邊就開始愉快地使用swoole吧
E. swoole loader和swoole什麼關系
他們都適用於web開發。
swoole框架像PHP框架一樣,適用於web開發。他們的不同之處在於swoole擴展是提供了更底層的伺服器通信機制,可以使用UDPTCP等協議,而不僅僅是http。
swoole擴展像其它PHP擴展一樣安裝,可以用pecl,也可以編譯安裝。而swoole框架用composer引入之後安裝即可,或者下載源碼後手動includerequir。
F. 在php中怎麼引用swoole
你可以參考swoole的官方文檔,
https://wiki.swoole.com
這里講的很清楚,快捷入口在這里
https://wiki.swoole.com/wiki/page/475.html
不懂的要學會找文檔看文檔,要記得安裝swoole
G. php代碼在WSL系統上運行swoole 擴展.還需要安裝搭建伺服器嗎
swoole擴展是PHP擴展。php swoole擴展,PHP語言的高性能網路通信框架,提供了PHP語言的非同步多線程伺服器,非同步TCP/UDP網路客戶端,非同步MySQL,資料庫連接池,AsyncTask,消息隊列,毫秒定時器,非同步文件讀寫,非同步DNS查詢。
1、下載swoole源碼包
[root@nginx ~]# wget
2、解壓進入swoole文件夾
[root@nginx ~]# tar -zxvf swoole-1.7.17-stable
[root@nginx ~]# cd swoole-src-swoole-1.7.17-stable/
3、編譯安裝swoole
[root@nginx swoole-src-swoole-1.7.17-stable]# phpize
[root@nginx swoole-src-swoole-1.7.17-stable]# ./configure
[root@nginx swoole-src-swoole-1.7.17-stable]# make && make install
4、php.ini配置文件載入swoole.so模塊
[root@nginx swoole-src-swoole-1.7.17-stable]# vi /usr/local/php/lib/php.ini
注意 php命令行運行和瀏覽器運行的配置文件不一樣。
php 命令行的配置:
[root@nginx swoole-src-swoole-1.7.17-stable]# php --ini
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini//配置文件
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
5、查看swoole模塊是否已經安裝成功
[root@nginx swoole-src-swoole-1.7.17-stable]# php -m
6、編寫服務端httpServer.php文件並運行
$serv = new swoole_server("127.0.0.1", 9501);
$serv->on('connect', function ($serv, $fd){
echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, 'Swoole: '.$data);
});
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
$serv->start();
運行httpServer.php
[root@nginx swoole-src-swoole-1.7.17-stable]# php httpServer.php
7、用telnet測試
[root@nginx ~]# telnet 127.0.0.1 9501
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello 客戶端
Swoole: hello 服務端
H. PHP5.3.3,在不升級php版本情況下,能使用swoole嗎
swoole是框架吧!應該與php版本沒什麼太大的關系吧!網路上說支持5.3+ 應該是可以的
I. 我安裝了swoole的php擴展,但為什麼不能在前端實例化它
這是一個非同步的服務端,不是前端使用的。
如果需要前端啟動服務,可以把後端分離,然後運用exec "nohup php (Path/To/Server)"命令來啟動服務。
J. windows sever2016怎麼安裝swoole
1.1、打開下載好的cygwin安裝包,開始安裝cygwin。
1.1.1、一直下一步,下一步到選擇cygwin的安裝目錄(這個同時也會是swoole的安裝目錄):
1.1.2、選擇文件包下載的存放位置:
1.1.3、選擇(所要連接的)伺服器(用於後續下載文件):
此處需要選擇一個伺服器,之後就是從該伺服器下載對應的安裝所需的模塊文件了。
因此,此處如果選擇的伺服器不合適的話,盡管你的網路本身速度很快,但是此處下載速度很慢。
所以,此處需要選擇一個速度比較快的伺服器。
對於國內來說,連接很多國外的伺服器,速度一般都很慢。
不過,目前已經的,口碑較好的,速度較快的伺服器,是近幾年剛出現的163的伺服器。
所以,此處對於多數人,最好的選擇就是選擇163的伺服器。
此處,我這里,由圖可見,已經默認選擇好了163的伺服器,所以不需要額外設置了。
如果你的選擇其他的伺服器,而且伺服器列表中也找不到163的話,那麼可以自己手動添加:
在Use URL處,輸入:
http://mirrors.163.com/cygwin/
1.1.4、選擇安裝的軟體包,這里需要安裝gcc、php、php開發工具、autoconf、pcre-devel,其它默認,這里注意的是,在上方的搜索欄搜索後,在下邊找到對應的軟體包選中,點擊下一步按鈕開始安裝。(注意:下方的截圖是我安裝後界面,點擊的位置一樣,後邊的圖標可能不一樣哦)
1.1.5、然後就是下一步下一步直到Cygwin安裝完成。
2、安裝swoole
2.1、解壓swoole的源程序到Cygwin的項目根目錄(如:/home/project)。
可以直接把壓縮包放到/home/project目錄下,右鍵解壓,也可以用命令執行,隨你。圖方便,這里我直接使用右鍵方式解壓。(命令解壓:tar -zcvf file swoole-src-1.8.11-rc1.tar.gz)
2.2、打開Cygwin軟體(注意:要是你的Cygwin也安裝在C盤,那你得注意了,安裝swoole的時候有可能報錯,解決辦法是右鍵管理員身份打開Cygwin)。
2.3、此時的環境就好似linux的終端,而根目錄就是Cygwin的安裝目錄,在界面輸入命令:cd /home/project/swoole,其中swoole是解壓的源程序。
2.4、輸入命令:phpize,生成編譯的配置文件configure。
2.5、輸入命令:./configure && make && make install
配置、編譯、編譯安裝swoole
(PS:執行./configure,除了編譯配置,還會檢測環境等等)
2.6、使用命令: php -i | grep php.ini,找到php cli使用的配置文件php.ini的路徑。
2.7、修改php.ini文件,在文件中添加一行:extension=swoole.so。
(PS: 1. 如果對linux下的vi編輯器不熟悉,可以在Windows下打開php.ini文件;2. 因為swoole已經改變了php的編程方式,所以建議關閉配置文件中的除swoole擴展之外的其它所有擴展,方法是在其前面加上「;」英文分號)。
2.7.1、linux下的vi編輯器。
2.7.2、手動打開修改。
2.8、關閉退出。
2.9、使用命令:php -m,查看載入的模塊,如果看到swoole,則擴展添加成功,到此環境搭建成功!
環境測試
1、在源程序中有一個examples文件夾,里邊是一些范常式序,我們這里以運行一個http伺服器做示範,進入到http范常式序目錄,在Cygwin中輸入命令:php server.php,因為http伺服器的范常式序是放在http目錄中的,用命令運行這個范常式序
2、打開瀏覽器,在地址欄輸入:127.0.0.1:9501,回車顯示Hello swoole,成功!
總結分析
1、此方法雖然可以在Windows下成功搭建swoole,但是php版本最高也就5.4,對於項目php版本需求高於5.4的就沒法使用了。這里是不是可以對其php版本升級呢?本人還沒有嘗試過,待後續...。如果有哪位大神成功升級,望留言說明方法以及提供建議,以此使我以及大眾少走彎路,不勝感激。
2、搭建成功後會生成自己的一個類似PphStudy環境的「IBOS控制中心」,運行swoole的時候得用這個環境運行,不需要再安裝別的php環境。
3、生成很多自帶無用的表,看著不太舒服。資料庫表也不好操作,本人還是習慣用navicat。