Swoole 系列基礎之一(多程式)

Dennis_Ritchie發表於2020-03-09

前言

聽說Swoole很火,所以我也來湊個熱鬧,哈哈,這篇文章是Swoole系列的第一篇博文,希望大家對Swoole有所瞭解。

windows下環境準備

由於我的開發環境是windows,所以我就以windows開發步驟為例,由於官方有對windows的支援,大家開啟如下連結:
https://www.swoole.com/page/download

Swoole系列基礎之一(多程式)

直接點選下載即可,沒有安裝的步驟,你只需要解壓即可,如下:

Swoole系列基礎之一(多程式)

把bin目錄新增到你的系統環境變數PATH中,比如對於我的win10系統:

Swoole系列基礎之一(多程式)

大家要注意了,如果之前你的PATH中已經新增過了包含php.exe的路徑,那麼你只需要把之前新增的給移除掉

經過上面的一番操作之後,開啟控制檯,輸入 php -m命令,檢視列印結果:

Swoole系列基礎之一(多程式)

你應該可以看到 swoole了,恭喜你。

官方文件

如果你有任何疑惑可以檢視Swoole的官方文件,地址:https://wiki.swoole.com/

程式碼倉庫

示例程式碼:https://gitee.com/obamajs/swoole-multi-pro...

程式碼結構:

用於我使用到了composer,所以程式碼結果如下:

Swoole系列基礎之一(多程式)

如果你需要執行例項,可以composer install,此外,你需要匯入autoload.php檔案,比如在我的common.php檔案中,有如下程式碼:

require_once "./vendor/autoload.php";

程式碼講解

核心程式碼位於multiple_pro.php檔案中,建立2個程式,Swoole建立程式很簡單,比如我有一個請求百度首頁的程式如下:

Swoole系列基礎之一(多程式)

網路請求,我使用的是GuzzleHttp,相信大家對這個都很熟悉,上面的程式碼會在一個獨立的程式中執行,所以我們無法在該子程式外面獲取程式的執行資料,這個時候,Swoole的共享記憶體就登場了:

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 協議》,轉載必須註明作者和本文連結

如果有不懂的地方,可以加我的qq:1174332406,或者是微信:itshardjs

相關文章