前言
聽說Swoole很火,所以我也來湊個熱鬧,哈哈,這篇文章是Swoole系列的第一篇博文,希望大家對Swoole有所瞭解。
windows下環境準備
由於我的開發環境是windows,所以我就以windows開發步驟為例,由於官方有對windows的支援,大家開啟如下連結:
https://www.swoole.com/page/download
直接點選下載即可,沒有安裝的步驟,你只需要解壓即可,如下:
把bin目錄新增到你的系統環境變數PATH中,比如對於我的win10系統:
大家要注意了,如果之前你的PATH中已經新增過了包含php.exe的路徑,那麼你只需要把之前新增的給移除掉。
經過上面的一番操作之後,開啟控制檯,輸入 php -m
命令,檢視列印結果:
你應該可以看到 swoole了,恭喜你。
官方文件
如果你有任何疑惑可以檢視Swoole的官方文件,地址:https://wiki.swoole.com/
程式碼倉庫
示例程式碼:https://gitee.com/obamajs/swoole-multi-pro...
程式碼結構:
用於我使用到了composer,所以程式碼結果如下:
如果你需要執行例項,可以composer install
,此外,你需要匯入autoload.php
檔案,比如在我的common.php
檔案中,有如下程式碼:
require_once "./vendor/autoload.php";
程式碼講解
核心程式碼位於multiple_pro.php
檔案中,建立2個程式,Swoole建立程式很簡單,比如我有一個請求百度首頁的程式如下:
網路請求,我使用的是GuzzleHttp
,相信大家對這個都很熟悉,上面的程式碼會在一個獨立的程式中執行,所以我們無法在該子程式外面獲取程式的執行資料,這個時候,Swoole的共享記憶體就登場了:
共享記憶體的使用也很簡單,操作步驟就是上面這樣,我們建立了一個共享記憶體表,既然被稱為表,那麼每一行都代表一組資料,它有2列,title和sum,同時我們制定了列的資料型別,最後別忘了,create
方法必須被呼叫,在上面的子程式中:
$global_table->set(1, ["title" => $result[1]]);
那麼我們如何知道子程式執行結束了呢?
$process_to_wait = 2;
while ($process_to_wait) {
Process::wait(true);
$process_to_wait--;
}
Process::wait
方法會阻塞當前程式,直到子程式結束,如果你有興趣的話,你可以列印一下這個方法的返回值。
最後由於我們使用到了共享記憶體,在主程式的最後,我們檢視共享記憶體的內容:
print_r($global_table->get(1));
本作品採用《CC 協議》,轉載必須註明作者和本文連結