如何将pid从一个PHP进程传递到另一个进程?

时间:2011-11-23 12:09:12

标签: php linux posix

有一个长期存在的PHP进程,它支持信号(SIGHUP等),另一个PHP进程需要知道第一个发送信号的PID。

我想设置一个环境变量,它将在第二个(客户端)进程中读取并用于我的目的,但putenv(...posix_getpid()...)似乎不会使其对另一个进程可见。

如何创建一个环境变量,在一个PHP进程中设置,对另一个进程可见?如果这是不可能的,那么首选方式是什么(我不想使用文件或数据库)?

2 个答案:

答案 0 :(得分:3)

通常的做法是在启动守护程序进程时创建一个全局已知的pid文件,并将其PID写入该文件。

其他愿意向守护程序发送信号的进程只需读取pid文件以检索其当前的pid并在此后发送信号。

答案 1 :(得分:1)

你所说的是Inter-Process Communication (IPC)。解决方案包括使用套接字,命名管道,文件,redis,一些消息总线/队列等。这是软件开发中常见且复杂的问题,并且具有许多强大的选项。

听起来像一个简单的文件对你来说很好,可能是......最简单。