<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## aphp ~~~ // 主進程上不支持事件循環,不支持定時器 // 進程層級不能超過二級 // 同一個進程內只支持一種類型的 事件循環 // 通常,主進程 wait() 負責監聽收養子進程,子進程 eventLoop() 運行事件循環 // 主進程也叫父進程,如果只定義一個進程,并無子進程,那么它不算父進程,可以使用 eventLoop() // wait() eventLoop() 后的代碼不會被執行,所以二者不能在一個進程內同時使用 ~~~ ```php <?php use aphp\Process; use aphp\IPC; use aphp\TcpServer; // GLOBALS_1 process::$event = new \aphp\Event\Select(); process::config([]); // 申明主進程 $master = process::create([ 'name' => 'master process', 'workdir' => __DIR__, 'umask' => 0, 'user' => 'root', 'group' => 'root', 'tty' => 'rtty', 'daemon' => true, ]); // 申明 主進程開始后 $master->onStart = function ($process) { echo "master: $process->pid"; $ipc = new IPC('unix:/temp/ipc-{uuid}.sock'); $ipc->register($process->pid); // $process->bindIPC($ipc); // 無序接收消息 [非會話消息 on] $process->onIPCMessage = function ($message, $ipc) { // $ipc->pid }; // 會話消息 // 向該 IPC 上所有綁定的進程發送消息(除了自己) $process->sendIPCAll('msg'); // $ipc->sendAll('msg'); // [異步非會話] 消息 $process->sendIPC($process->pid, 'msg'); // 給自己發送 [異步會話] 消息,不會觸發 [非會話消息 on] $process->sendIPC($process->pid, 'msg', function ($msg) {}); // $ipc->send($process->pid, 'msg', function ($msg) {}); // 給自己發送必回消息,即發送并同步阻塞直至接收到消息(接收回復超時 .5s) $recvMsg = $process->sendRecvIPC($process->pid, 'msg', 0.5); // $recvMsg = $ipc->sendRecv($process->pid, 'msg', 0.5); // GLOBALS_2 // 申明 創建子進程 // 返回子進程實例 $child = $process->child([ 'num' => 4, 'name' => 'child process', 'workdir' => __DIR__, ]); // 申明 子進程開始后 $child->onStart = function ($process) use ($ipc) { echo "child: $process->id : $process->pid : $process->ppid"; $ipc->register($process->id); $process->onIPCMessage = function ($message, $ipc) { // 來自父進程的消息 if ($ipc->pid === $process->ppid) { } // 來自兄弟進程的消息 if ($process->isBrother($ipc->pid)) { } }; $tcpServer = new TcpServer('tcp://0.0.0.0:81'); $tcpServer->onConnect = function ($connect) {}; $tcpServer->onClose = function ($connect) {}; $tcpServer->onError = function ($connect) {}; $tcpServer->onBreak = function ($connect) {}; $tcpServer->onMessage = function ($connect) {}; $tcpServer->onRead = function ($connect) {}; $tcpServer->listen(); // $tcpServer->accept(); // 前兩個子進程不做網絡服務 if ($process->id > 1) { $child->addSocketObserver($tcpServer); } // GLOBALS_3 if (0 == $process->id) { // 第一個子進程什么都不做 } if (1 === $process->id) { // 第二個子進程加一個定時器 // 每隔 1s 給其它兄弟進程發信息 Timer::add(1, function () use ($process) { $process->sendIPC($process->brotherPids, time()); }); // 每隔 15s 給 祖先進程 發信息 Timer::crontab('*/15 * * * * *', function () use ($process) { $process->sendIPC($process->ancestorsPid, 'hello'); }); } }; // $child->onXXX ... // $child->eventLoop(); // process::$event->loop(); }; $master->onStarted = function () { }; // $master->onXXX ... $master->wait(); // $master->eventLoop(); // $child->eventLoop(); ``` ---- [linux之wait()和waitpid()詳解_lwz-qq的博客-CSDN博客_linux wait()](https://blog.csdn.net/lwz15071387627/article/details/87991394?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0-87991394-blog-116556619.pc_relevant_multi_platform_whitelistv1&spm=1001.2101.3001.4242.1&utm_relevant_index=3)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看