国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問如何webman的master進程中運行自定義代碼

深林孤鷹

請問webman中我想在master進程中運行自定義代碼,比如訪問一個webapi,根據(jù)返回結(jié)果來定義一些環(huán)境、參數(shù)或者退出服務(wù),在哪里加比較優(yōu)雅呢,謝謝~

1008 3 3
3個回答

walkor 打賞

為了保證整個服務(wù)穩(wěn)定,master進程不允許有任何業(yè)務(wù)代碼。
設(shè)置bootstrap,每個進程啟動的時候會執(zhí)行bootstrap的啟動項

http://www.wtbis.cn/doc/webman/others/bootstrap.html

  • 深林孤鷹 2024-06-18

    那可否這樣,我自定義一個進程,從webapi獲取數(shù)據(jù)后通知master進程重啟、退出或者其他一些操作?

  • walkor 2024-06-18

    可以。
    如果你要restart重啟的話,自定義的控制進程需要單獨一個腳本啟動,因為自己無法重啟自己。
    reload或者其它操作可以一起啟動。

  • 深林孤鷹 2024-06-18

    也就是說,只能在 自定義進程中 使用exec來控制,而不能在php代碼中獲取到類似app的應(yīng)用對象然后app->exit()什么的命令么?

  • walkor 2024-06-18

    重啟有兩種:
    第一種:php start.php restart,主進程也重啟那種
    這種不支持自己重啟自己。需要沒有親緣進程去執(zhí)行才行。

    第二種:子進程重啟,主進程不重啟,也就是reload
    reload只需要在業(yè)務(wù)代碼中執(zhí)行 posix_kill( posix_getppid(), SIGUSR1); 即可

    不確認你具體要做什么 ,具體要的是哪種重啟。

  • tanhongbin 2024-06-19

    重啟進程的需求是啥呢???

  • 深林孤鷹 2024-06-19

    想做一種架構(gòu),一臺主服務(wù)器控制一些子服務(wù)器去做一些操作,比如停止、重啟某一臺子服務(wù)器的服務(wù)這種,子服務(wù)器會過一段時間查詢主服務(wù)器的命令,然后去執(zhí)行。。貌似不太好弄,自定義進程好像不能通知主進程去執(zhí)行停止、重啟這種方式?

  • tanhongbin 2024-06-19

    哦哦,大佬你這系統(tǒng)聽著就很牛,加油

  • 深林孤鷹 2024-06-19

    很簡單的需求,只是有點不常見,社區(qū)搜了很多沒搜到,等真大佬回復(fù)問題~

efnic

原來做過交易,拋磚引玉!
【客戶自定義服務(wù)器】可以通過改動進程配置文件config/process.php,比如請求http接口獲取要啟動的業(yè)務(wù)進程,合并數(shù)組后return即可。

【遙控器】webman項目的根目錄,單獨新建一個腳本文件,啟動一個worker,異步連接到中央服務(wù)器等待接收重啟指令。
其他自由發(fā)揮,比如接收 進程配置,直接改寫 上述的進程配置文件,然后給重啟指令即可。

  • efnic 2024-10-15

    另外,所有在composer.json文件的 autoload.files 加載的文件,都會優(yōu)先載入并運行;
    意思就是,所有 autoload.files 文件加載運行后,才輪到 webman的start.php

  • 深林孤鷹 2024-10-17

    感謝大佬回復(fù),不過有兩個小問題,1是composer.json文件的 autoload.files 加載的文件是可以等待HTTP阻塞調(diào)用并返回數(shù)據(jù)后再去運行webman的start.php吧?2是【遙控器】中,啟動的這個worker好像是子進程,子進程不能調(diào)用restart去重啟父進程。。

  • efnic 2024-10-17

    注意看題目,遙控器】webman項目的根目錄,單獨新建一個腳本文件,啟動一個worker;這個是獨立的兩個進程(master進程、worker進程),當然可以調(diào)用webman的 start.php

  • efnic 2024-10-17

    回復(fù):1是composer.json文件的 autoload.files 加載的文件是可以等待HTTP阻塞調(diào)用并返回數(shù)據(jù)后再去運行webman的start.php吧

    答案:是的

  • 深林孤鷹 2025-02-23

    不好意思大佬,今天才想起來,剛試了一下遙控器】這個方案,確實可行,腳本文件我用 exec(’start.php restart‘) 來啟動為webman,測試成功,但不知如何保持這個腳本文件后臺執(zhí)行,我想運行一個定時器每天去主服務(wù)器獲取指令(或建立個長連接),必須要后臺才行,不吝賜教~

  • efnic 2025-02-25

    在根目錄,創(chuàng)建一個【遙控器】腳本,單獨啟動
    use \Workerman\Worker;
    use \Workerman\Timer;
    require_once __DIR__ . '/vendor/autoload.php';

    $task = new Worker();
    $task->onWorkerStart = function($task)
    {
    // 每2.5秒執(zhí)行一次
    $time_interval = 2.5;
    Timer::add($time_interval, function()
    {
    //管理進程 todo...
    });
    };

    // 運行worker
    Worker::runAll();

  • 深林孤鷹 2025-02-25

    謝謝,我去試試~

efnic

【遙控器】webman項目的根目錄,單獨新建一個腳本文件,啟動一個worker;這個腳本是單獨啟動的,與webman 沒有親緣關(guān)系。

  • 暫無評論
??