【PHP8.x】posix_getpid関数の使い方

posix_getpid関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

posix_getpid関数は、現在実行中のPHPスクリプトのプロセスID(PID)を取得する関数です。オペレーティングシステムは、実行中のプログラムを「プロセス」という単位で管理しており、それぞれのプロセスを識別するために「プロセスID」という一意の整数値を割り当てます。この関数は、自身のスクリプトがどのプロセスとして動作しているか、その識別番号を取得するために使用されます。取得したプロセスIDは、システムの監視やデバッグ、プロセスの管理に役立ちます。例えば、長時間実行されるバッチ処理などで、外部から特定のプロセスを監視したり、強制的に終了させたりする場合に、対象を特定する情報として利用できます。また、複数のプロセスが同時にファイルを作成する際に、ファイル名にプロセスIDを含めることで名前の重複を防ぐといった応用も可能です。この関数は引数を取らず、戻り値として自身のプロセスIDを整数型で返します。なお、この関数はPOSIX拡張モジュールに含まれるため、主にLinuxやmacOSなどのUNIX系オペレーティングシステムで利用できます。

構文(syntax)

1<?php
2
3$process_id = posix_getpid();

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

現在のPHPプロセスIDを整数型で返します。

サンプルコード

PHPでプロセスIDとユーザー情報を取得する

1<?php
2
3/**
4 * 現在のプロセスのPIDと、そのプロセスを実行しているユーザーの情報を表示します。
5 * posix_getpid() と posix_getpwuid() の使用例を示します。
6 *
7 * @return void
8 */
9function displayProcessAndUserInfo(): void
10{
11    // 現在実行中のスクリプトのプロセスID(PID)を取得します。
12    $pid = posix_getpid();
13    echo "現在のプロセスのID (PID): " . $pid . PHP_EOL;
14
15    // 現在のプロセスの実効ユーザーID(UID)を取得します。
16    // このUIDを使ってユーザーの詳細情報を取得します。
17    $uid = posix_getuid();
18    echo "現在のプロセスの実効ユーザーID (UID): " . $uid . PHP_EOL;
19
20    // 取得したUIDに基づいて、システムのパスワードデータベースからユーザー情報を取得します。
21    // 戻り値は連想配列(成功時)または false(失敗時)です。
22    $user_info = posix_getpwuid($uid);
23
24    if ($user_info !== false) {
25        echo "--- ユーザー情報 ---" . PHP_EOL;
26        echo "  ユーザー名: " . $user_info['name'] . PHP_EOL;
27        echo "  ホームディレクトリ: " . $user_info['dir'] . PHP_EOL;
28        echo "  シェル: " . $user_info['shell'] . PHP_EOL;
29        // 他にも 'uid', 'gid', 'gecos', 'passwd' などの情報が含まれます。
30    } else {
31        echo "エラー: UID " . $uid . " のユーザー情報を取得できませんでした。" . PHP_EOL;
32        echo "  (この関数はPOSIXシステムでのみ利用可能です。)" . PHP_EOL;
33    }
34}
35
36// 関数を実行して、結果を表示します。
37displayProcessAndUserInfo();
38
39?>

PHPのposix_getpid()関数は、現在実行中のスクリプトがオペレーティングシステム上で持っている「プロセスID(PID)」という固有の識別番号を取得するために使用されます。この関数は引数を一切取らず、現在のプロセスのPIDを整数型(int)で返します。

サンプルコードでは、まずposix_getpid()を利用して現在のプロセスのPIDを取得し、画面に表示しています。さらに、posix_getuid()関数を使って、このプロセスを実行しているユーザーの実効ユーザーID(UID)を取得しています。取得したUIDを引数としてposix_getpwuid()関数に渡すことで、システムのユーザー情報データベースから、そのユーザーの具体的な情報(ユーザー名、ホームディレクトリ、シェルなど)を取得し、表示しています。posix_getpwuid()は、成功するとユーザー情報を連想配列で返し、失敗するとfalseを返します。これらのposix系の関数は、主にUNIXやLinuxなどのPOSIX準拠システムで動作し、プログラムからプロセスやユーザーに関する情報を確認したい場合に役立ちます。

posix_で始まる関数は、LinuxやmacOSなどのPOSIX互換システムでのみ動作し、Windows環境では利用できませんのでご注意ください。posix_getpwuid関数は、ユーザー情報が取得できなかった場合にfalseを返すため、必ず戻り値がfalseでないかを確認し、適切なエラー処理を実装することが重要です。このコードがWebサーバー上で実行される場合、表示されるユーザー情報はWebサーバーの実行ユーザー(例: www-data)となることがほとんどです。PHPスクリプトを実行したユーザーと異なる場合があることを理解しておきましょう。取得できるユーザー情報はシステム上の情報であるため、その取り扱いには十分注意し、外部に漏洩しないよう慎重に管理してください。

関連コンテンツ

関連プログラミング言語

【PHP8.x】posix_getpid関数の使い方 | いっしー@Webエンジニア