中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php_swoole對進程的基本操作

發布時間:2021-09-03 19:35:39 來源:億速云 閱讀:109 作者:chen 欄目:大數據

本篇內容主要講解“php_swoole對進程的基本操作”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php_swoole對進程的基本操作”吧!

在以往的開發項目中,要操作進程就會使用PHP自帶的pcntl拓展。但是pcntl存在著許多的不足:

  • pcntl沒有提供進程間通信的功能

  • pcntl不支持重定向標準輸入和輸出

  • pcntl只提供了fork這樣原始的接口,容易使用錯誤

這邊我們使用swoole進程管理模塊,用來替代PHPpcntl

場景:日常任務中,有時需要通過php腳本執行一些日志分析,隊列處理等任務,當數據量比較大時,可以使用多進程來處理。

準備:安裝PHP_swoole拓展;

write($data)
  向管道內寫入數據。$data的長度在Linux系統下最大不超過8KMacOS/FreeBSD下最大不超過2K
start():
   執行fork調用,啟動子進程。

/** 創建子進程,將數據寫入管道,然后啟動子進程 */
$process = new \swoole_process([$this, 'sonProcessWork']);
$process->write(json_encode($data_pop));
$pid = $process->start();

swoole_event_add():  將一個socket加入到底層的reactor事件監聽中;在子進程中處理一些耗時的計算或者操作;

/** 獲取管道的業務數據,進行相關的操作 */
public function sonProcessWork(\swoole_process $worker){
  $GLOBALS['worker'] = $worker;
  swoole_event_add($worker->pipe, function($pipe) {
   /******start*你的業務邏輯 *******/
    .....
   /******end*你的業務邏輯 *******/
  $worker->exit(0);
  })
}

wait(false)

  回收結束運行的子進程

/** 根據信號處理紫禁城 */
private function sig_handler($signo) { 
 Process::signal(SIGCHLD, function($sig) {
  //必須為false,非阻塞模式
  while($ret =  Process::wait(false)) {
      echo "PID={$ret['pid']}\n";
  }
});
}

到此,相信大家對“php_swoole對進程的基本操作”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

凭祥市| 巩义市| 宁城县| 阳高县| 巴马| 屏边| 彰化市| 安国市| 保定市| 巴塘县| 金湖县| 慈溪市| 佛教| 象州县| 正镶白旗| 镶黄旗| 获嘉县| 卓资县| 莱州市| 岑溪市| 长春市| 定远县| 凤翔县| 侯马市| 土默特右旗| 和林格尔县| 南宫市| 嘉兴市| 东明县| 丹江口市| 三都| 观塘区| 措勤县| 鹤庆县| 内江市| 米易县| 汝阳县| 安岳县| 安福县| 西丰县| 汝南县|