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

請問如何webman的master進(jìn)程中運(yùn)行自定義代碼

深林孤鷹

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

1056 3 3
3個(gè)回答

walkor 打賞

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

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

  • 深林孤鷹 2024-06-18

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

  • walkor 2024-06-18

    可以。
    如果你要restart重啟的話,自定義的控制進(jìn)程需要單獨(dú)一個(gè)腳本啟動,因?yàn)樽约簾o法重啟自己。
    reload或者其它操作可以一起啟動。

  • 深林孤鷹 2024-06-18

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

  • walkor 2024-06-18

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

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

    不確認(rèn)你具體要做什么 ,具體要的是哪種重啟。

  • tanhongbin 2024-06-19

    重啟進(jìn)程的需求是啥呢???

  • 深林孤鷹 2024-06-19

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

  • tanhongbin 2024-06-19

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

  • 深林孤鷹 2024-06-19

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

efnic

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

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

  • efnic 2024-10-15

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

  • 深林孤鷹 2024-10-17

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

  • efnic 2024-10-17

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

  • efnic 2024-10-17

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

    答案:是的

  • 深林孤鷹 2025-02-23

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

  • efnic 2025-02-25

    在根目錄,創(chuàng)建一個(gè)【遙控器】腳本,單獨(dú)啟動
    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()
    {
    //管理進(jìn)程 todo...
    });
    };

    // 運(yùn)行worker
    Worker::runAll();

  • 深林孤鷹 2025-02-25

    謝謝,我去試試~

efnic

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

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??