Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。
Forker可以让php-cli进程借助nohup以守护进程的方式运行。这个Forker仅仅是让进程成为守护进程,不会复制父进程的内存。 无 ?php// 运行实例,fork 10 个进程,每个进程输出一行 Im a worker ,并保存在 /tmp/forker.log 中:// CLI命令: php Forker.php 10/
Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。这个 Forker 仅仅是让进程成为守护进程,不会复制父进程的内存。
<?php // 运行实例,fork 10 个进程,每个进程输出一行 Im a worker ,并保存在 /tmp/forker.log 中: // CLI命令: php Forker.php 10 /* if (empty($argv[1])) { echo "Im a worker\n"; sleep(10); exit(); } else { $forker = new Forker('/tmp/forker.log'); $forker->fork($forker->findCommand('php') . ' ' . __FILE__, (int)$argv[1] <= 0 ? 10 : (int)$argv[1]); } */ /** * Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。 * 这个 Forker 仅仅是让进程成为守护进程,不会复制父进程的内存。 */ class Forker { private $nohub = '/usr/bin/nohup'; private $out = '/tmp/forker.log'; /** * @param string $output 输出文件的路径。进程的标准输出将重定向到此文件 * @throws \RuntimeException */ public function __construct($output = '') { if (false !== ($nohup = $this->findCommand('nohup'))) { $this->nohub = $nohup; } if (!is_executable($this->nohub)) { throw new \RuntimeException('nohup not excutable'); } if ($output) { $this->setOutput($output); } } /** * 设置输出文件的路径。进程的标准输出将重定向到此文件 * @param string $file * @return \Forker * @throws \RuntimeException */ public function setOutput($file) { if (!is_file($file)) { $dir = dirname($file); if ((!is_dir($dir) && !mkdir($dir, 0755, true)) || !is_writable($dir)) { throw new \RuntimeException('output is not writable, can not create output'); } } else if (!is_writable($file)) { throw new \RuntimeException('output is not writable'); } $this->out = $file; return $this; } /** * 获取输出文件的路径 * @return string */ public function getOutput() { return $this->out; } /** * 执行命令 * @param string $command 命令。命令中的文件参数需要使用绝对路径 * @param int $forks fork的进程数 */ public function fork($command, $forks = 1) { for ($i = 0; $i < $forks; ++$i) { $this->execute($command); } } /** * 根据当前环境查找命令的绝对路径 * @param string $name * @return boolean */ public function findCommand($name) { $file = trim(exec("which {$name}")); if (is_file($file) && is_executable($file)) { return $file; } return false; } /** * 执行命令,成功返回 true,失败返回 false * @param string $command * @return boolean */ private function execute($command) { $lines = []; $code = 0; exec("{$this->nohub} {$command} >> {$this->out} 2>&1 &", $lines, $code); if (0 !== (int)$code) { file_put_contents($this->out, "fork {$command} FAILD[{$code}]:\n" . implode("\n", $lines) . "\n", FILE_APPEND); return false; } file_put_contents($this->out, "fork {$command} OK\n", FILE_APPEND); return true; } }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

explorer.exe是什麼進程在我們使用Windows作業系統的時候,常常會聽到一個名詞"explorer.exe".那麼,你是否好奇這個進程到底是什麼?在本文中,我們將詳細解釋explorer.exe是什麼進程以及其功能和作用。首先,explorer.exe是Windows作業系統的關鍵流程,它負責管理和控制Windows資源管理器(Window

「com surrogate」是「C:\Windows\System32\dllhost.exe」的進程;出現該進程通常是「COM+」元件停止運作,這個進程佔用高甚至直接未回應,這是由於電腦在載入檔案圖示的時候出現問題,導致電腦變的卡頓,可以在電腦屬性設定中解決卡頓問題。

ccsvchst.exe是一種常見的進程文件,它是SymantecEndpointProtection(SEP)軟體的一部分,而SEP則是一款由著名的網路安全公司Symantec開發的終端保護解決方案。作為該軟體的一部分,ccsvchst.exe負責管理和監控SEP的相關進程。首先,我們來了解SymantecEndpointProtection(

在Linux系統中,殭屍行程是已經終止但仍保留在系統中的特殊流程。雖然殭屍行程不會消耗太多資源,但如果數量太多,可能會導致系統資源耗盡。本文將介紹如何正確清除殭屍進程,以確保系統的正常運作。 1Linux殭屍行程子程序完成任務後,如果父行程沒有及時檢查狀態,子行程將成為殭屍行程。子進程在等待父進程確認,完成後系統才會回收。否則,殭屍行程會繼續懸掛在系統中。若要檢查系統中是否有殭屍進程,可透過執行命令top來查看所有正在執行的進程及可能存在的殭屍進程。 ‘top’指令的結果從上圖可以看到Linux中進

nohup的作用及原理解析在Unix和類Unix作業系統中,nohup是一個常用的命令,用於在後台運行命令,即便用戶退出當前會話或關閉終端窗口,命令仍然能夠繼續執行。在本文中,我們將詳細解析nohup指令的作用和原理。一、nohup的作用後台運行命令:透過nohup命令,我們可以讓需要長時間運行的命令在後台持續執行,而不受用戶退出終端會話的影響。這在需要運行

Linux程序優先級調整方法詳解在Linux系統中,進程的優先順序決定了其在系統中的執行順序和資源分配。合理調整進程的優先順序可以提高系統的效能和效率。本文將詳細介紹Linux中如何調整進程的優先級,並提供具體的程式碼範例。一、進程優先權概述在Linux系統中,每個行程都有一個與之相關聯的優先權。優先權的範圍一般是-20到19,其中-20表示最高優先權,19表

四種方法:尋找進程 ID(PID)並使用「kill」指令終止進程;使用「killall」指令(謹慎使用)終止所有「nohup」進程;查看「nohup.out」檔案以取得相關資訊。透過這些方法,使用者可以有效關閉「nohup」命令後台執行的任務。

downloads可以刪除嗎近年來,隨著數位時代的來臨,我們生活中出現了越來越多的數位化產品和服務。而隨之而來的,就是我們對於數位化內容的需求與日俱增。在日常生活和工作中,我們經常需要下載各種各樣的文件,如文件、圖片、音訊和視訊等等。而這些下載的文件,通常都被保存在一個名為「downloads」(下載)的資料夾中。然而,隨著時間的推移,我們經常發現,“
