PHP 的 SyncMutex class 命名互斥量是否在同一服务器上的不同进程之间工作?

Does PHP's SyncMutex class named mutexes work across different processes on the same server?

背景

我正在使用 Apache 和 PHP 构建 Web 应用程序,我需要同步对共享内存区域的访问。由于 PHP 的不同实例具有不同的进程 ID,我想知道 PHP 的带有命名互斥锁的 SyncMutex class 是否可以用于此目的。通过 Google 搜索,我看到了很多关于将文件用作互斥锁的信息,但关于 SyncMutex class 的信息并不多。除了 class 的定义和一些关于如何使用它的示例,甚至手册也没有更多信息。

问题

一个进程中名为 SyncMutex class 的互斥体是否会在另一个进程中可见?

研究

https://helperbyte.com/questions/470561/how-to-prevent-simultaneous-running-of-a-php-script

PHP mutual exclusion (mutex)

PHP rewrite an included file - is this a valid script?

Most reliable & safe method of preventing race conditions in PHP

最后

所涉及的数据是非常 瞬态的,可以根据需要随时更改(想想 C 语言中的 volatile 关键字)。数据在 30 秒左右后变得无用,并会定期清除。出于性能原因,我将它存储在服务器的共享内存中,访问速度比写入文件或数据库快得多。这是一个有效的用例还是我找错了树?我应该用别的东西吗?像信号量?

更多信息(编辑 8/25/2021)

经过进一步研究,我发现 PHP 的 pthreads 模块已在几个月前被模块所有者贬值,不再维护。 PHP 现在正在使用称为并行的东西来促进多线程。由于我正在使用的设置设计,并行与我正在尝试做的事情不兼容。所以看起来我现在必须使用 MySQL 来处理这个问题。

我使用内存服务器的想法仍然可行,但是由于PHP的多线程架构的变化,服务器需要用PHP以外的语言编写。这将使用 C++ 完成,但不是现在。

感谢所有回复的人。

根据 SyncMutex::unlock 文档页面下方用户提供的示例,在一个进程中创建的 SyncMutex 锁在另一个进程中可见。

此外 SyncSharedMemory class 描述明确表示:

Shared memory lets two separate processes communicate without the need for complex pipes or sockets. [...] Synchronization objects (e.g. SyncMutex) are still required to protect most uses of shared memory.