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

workerman作為客戶端的關閉問題

DBsan

我服務器有一個php程序用來作為客戶端拉取一個websocket連接,獲得想要的內容后就結束進程。
我使用 Worker::stopAll() 后,程序沒有關閉而是無限重啟……不知道為什么。
(在命令行里以debug模式啟動就會無限循環(huán)執(zhí)行-重啟,直接通過瀏覽器訪問程序的話返回500)
新手上路,感謝各位大佬幫忙看一下!

<?
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker();

$worker->onWorkerStart = function($worker){

    $con = new AsyncTcpConnection('ws://127.0.0.1:2000');

    $con->onConnect = function(AsyncTcpConnection $con) {
        echo "ws連接成功";
        $con->send(json_encode(
                array("type"=>2)
            )
            );
    };

    $con->onMessage = function(AsyncTcpConnection $con, $data) {
        switch (json_decode($data,true)["type"]) {
            case '2':
                //通過ws從另一個程序得到可以備份圖片的命令,就備份畫板狀態(tài)圖片,完成后結束進程
                if(copy("draw.png", "backup/".date("Y-m-d H:i:s").".png")){
                    echo "備份成功";
                }else {
                    echo "備份失敗";
                }
                break;
            default:
                echo "與服務器交互失敗";
                break;
        Worker::stopAll();
        }
    };
};

Worker::runAll();

?>
2308 1 0
1個回答

= - =

你是寫了語法錯誤嗎,還是說你需要的是 $con->close();

截圖

  • DBsan 2022-07-21

    我是想關閉連接,同時結束腳本運行。
    我看手冊里,worker類有Worker::stopAll()這個接口,描述是說用來結束進程的,但下面例子看來又好像是重啟進程的
    http://www.wtbis.cn/doc/workerman/worker/stop-all.html

    $con->close() 我試過了,可以斷開連接,但是worker實例還在進行,腳本未結束

  • walkor 2022-07-21

    Worker::stopAll() 只是停止當前進程,當前進程停止后主進程會自動拉起一個新進程替代。如果你要停止整個workerman服務,用 posix_kill(posix_getppid(), SIGINT);

  • = - = 2022-07-21

    暫時沒想到是什么場景要把 master 進程給結束掉。如果結束了,什么時候要再次啟動呢?

  • xuntee 2022-07-22

    看我的 處理方法
    我昨天 剛剛發(fā)現(xiàn)這個問題

    http://www.wtbis.cn/a/1377

年代過于久遠,無法發(fā)表回答
??