一例swoole_process運行swoole_http_server

  • swoole_process
swoole_process('執行的文件路徑','文件所需的參數');//利用swoole-process執行一個外部腳本
swoole_process__construct(回調函數, redirect_stdin_stdout, 是否建立進程通訊用的管道)
參數redirect_stdin_stdout 值爲true子進程返回的結果不輸出到屏幕,false輸出到屏幕
swoole_process::wait()//程序執行完畢後,回收子進程
  • 用swoole_http_server實現一例http服務器
<?php
    $server = new swoole_http_server('127.0.0.1',9502);
    $server->on('request',function($request,$response){
        $response->end("there is a game of love");
});
    $server->start();
?>
  • 實現一個swoole_process對象管理的swoole_http_server進程(文件名:myhttpserver.php)
<?php
//每一個進程都有一個進程ID
$sw = new swoole_process(function(swoole_process $sw){
    $sw->exec('/usr/bin/php7',[__DIR__.'/../myhttpserver/myhttpserver.php']);
},false);
$pid =$sw->start();
echo $pid.PHP_EOL;
swoole_process::wait(); #等待程序運行完畢後,回收子進程
  • 在linux終端切換到程序所在位置調用php運行腳本swprocess.php
下圖所示正是腳本文件swprocess.php中實例化的swoole_process進程也就是$pid = $sw->start()返回的那個$pid

  • ps aux|grep swprocess.php
這段代碼用於查看運行swprocess.php的進程信息,由此能夠看出,進程號12430是12431(swprocess.php腳本中開啓的那段swoole_process)的父進程

  • pstree -p 13430  該命令的做用是查看進程的分支

  • ps -asf |grep myhttpserver 
這裏的myhttpserver就是腳本swprocess.php中開啓子進程執行($sw->exec())的swoole_http_server進程,也就是運行myhttpserver.php的那個進程

相關文章
相關標籤/搜索