PHPでコマンドラインスクリプトを作成するときは、 CLI_SET_PROCESS_TITLEおよびCLI_GET_PROCESS_TITLEを介してプロセスタイトルを設定または取得することをお勧めします。これは、DaemonsやTask Keue ConsumersなどのCLIアプリケーションを書くのに非常に実用的です。
ただし、多くの開発者は、 cli_get_process_title()を呼び出すときに空の文字列またはfalseを返すという問題に遭遇します。 CLI_SET_PROCESS_TITLE()が以前に呼び出され、タイトルを正常に設定したことは明らかです。なぜそれを再び取得できないのですか?問題はあなたのコードにはないかもしれませんが、PHPの構築方法にあります。
PHPのCLI_SET_PROCESS_TITLEおよびCLI_GET_PROCESS_TITLE関数は、PHPがコンパイル時にコンパイルできるオプションの機能であるProctitleサポートから来ています。 PHPが有効にならない-Enable-Cliおよび-Enable-ProCtitleがビルドプロセス中に有効になっていない場合、これらの機能は役に立たない。
次のコマンドを確認できます。
php -i | grep "Process title"
関連する出力がない場合、または次の行が欠落していることがわかりました。
Process title support => enabled
つまり、この機能はPHP環境では有効になっていません。
以下は、プロセスタイトルをセットアップして取得しようとする例です。
<?php
cli_set_process_title("my_worker_task");
$title = cli_get_process_title();
if ($title === false || $title === "") {
echo "プロセスタイトルを取得できません,お会計お願いします PHP 有効になっているかどうか proctitle サポート。\n";
} else {
echo "現在のプロセスタイトルはです: " . $title . "\n";
}
PHPが関連するサポートを有効にしない場合、実行後に警告または空の出力のみが表示される場合があります。
PHPをコンパイルするときに、 -enable-cli (通常はデフォルトで有効)および-enable-proctleオプションを追加する必要があります。例えば:
./configure --enable-cli --enable-proctitle
make && make install
これにより、プロセスタイトルサポートが可能になり、その後、これら2つの関数を正常に使用できます。
PHPを再コンパイルできない場合は、 Exec()またはCalling Systemコマンドを使用してプロセスタイトルを手動で設定することを検討できます。
<?php
$title = "my_custom_task";
exec("exec -a $title php your_script.php");
ただし、この方法は十分にエレガントではなく、 Exec()が無効になっているか、異なるシステムの動作が異なるため、信頼できない場合もあります。
CLI_GET_PROCESS_TITLE()はプロセスタイトルを取得できませんが、これはおそらくコードの問題ではありませんが、PHPは関連する機能を有効にしません。開発者がそのような問題に遭遇したら、できるだけ早く現在のPHP環境のビルドパラメーターを確認する必要があります。特に、DockerまたはPHPバージョンを備えた一部のオペレーティングシステムを使用する場合は、この詳細に注意する必要があります。