PHP Cli 模式設置進程名稱

最近一直在優(yōu)化自己的 PHP 多進程管理工具。GitHub 地址:https://github.com/fingerQin/phpthread

通過命令啟動之后,它在系統(tǒng)后臺運行的名稱如下:

[root@localhost logs]# ps -ef|grep "Event/register"
root      1358  1356  0 19:50 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1482  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1483  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1484  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1486  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1487  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register
root      1499  1240  0 19:56 pts/1    00:00:00 grep --color=auto Event/register

大家可以看到。它會把我們執(zhí)行 PHP 腳本的整個命令路徑全部顯示出來。沒辦法偽裝成一個特殊的名稱,或者說優(yōu)雅的名稱。

查閱相關資料。其實 PHP 早已經支持這種操作。

一、proctitle 擴展實現(xiàn)

在 PHP 5.5.0 版本之前,只能通過 proctitle 擴展實現(xiàn)。下載地址:http://pecl.php.net/package/proctitle

關于安裝這種 PHP C 擴展。這里就不展示說明。關于 PHP C 擴展的教程很多。

proctitle 擴展安裝好之后。通過該擴展提供的 setproctitle 方法實現(xiàn)自定義進程名稱。

process.php

<?php
setproctitle("NewProcess");
sleep(30);

此時我們命令運行腳本:

$php process.php

腳本會睡眠 30 秒。此時我們另開一個終端去查看該進程的名稱。會發(fā)現(xiàn)該擴展名稱已經被修改為:"NewProcess"。

由于該擴展已經 7 年未更新。所以,不推薦使用。

二、cli_set_process_title 方法實現(xiàn)

從 PHP 5.5.0 開始,PHP 已經內置了 cli_set_process_title 方法來解決這個重置進程名稱的函數(shù)。我只能說,太貼心了。

使用也簡單。

process2.php

<?php
cli_set_process_title("NewProcess");
sleep(30);

執(zhí)行該腳本之后,咱們依然別啟一個命令終端查看:

[root@localhost public]# ps -ef|grep NewProcess
root     10489  1240  0 09:49 pts/1    00:00:00 NewProcess
root     10496  1221  0 09:50 pts/0    00:00:00 grep --color=auto NewProcess

我們可以看到。已經生效了。

它就是如此簡單。以后我們可以將該進程名稱優(yōu)雅化。也可以以此來偽裝隱藏自己??傊?,你可以用這個神奇的名字干你想干的事情。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容