php - 在 Apache 上的 PHP 线程之间共享数据

标签 php multithreading apache

根据定义,真正的线程不共享内存,因此无法共享数据。

然而,我正在寻找一种方法来保持正在运行的连接计数(不仅仅是连接,还包括其他一些东西),该计数可以从服务器中的任何一个线程内更新,并且将被共享(静态)跨所有线程。我该怎么做?

一些注意事项:

  • 性能是关键,因此没有数据库,没有外部服务器连接,最好没有 Memcached

  • 此数据每秒更新数千次

  • 从一个线程更新数据后,所有其他线程必须立即可以使用新值

  • 理想情况下,数据应同时可供多个线程使用

最佳答案

使用Xcache ,您可以使用以下API:

int   xcache_inc(string name [, int value [, int ttl]])

这将以原子方式递增由 name 标识的值,并将其存储在跨请求的共享内存中。要从 Apache 中任何正在运行的线程检索值,请使用:

mixed xcache_get(string name)

注意:当 Apache (httpd) 重新启动时,这些值将丢失。

注释 2:根据定义,线程确实共享内存,并且只要它们在同一进程中运行,就可以轻松共享数据。当性能至关重要并且大量数据在线程之间并行处理和协调时而不是可能较慢的 IPC 或复杂的共享内存解决方案时,这是使用它们的主要原因之一。然而,在线程之间共享数据很复杂,特别是当数据可变时,并且应该由那些对挑战有透彻了解的人来承担。

关于php - 在 Apache 上的 PHP 线程之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19920046/

相关文章:

apache - 重定向 URL 路径以使用 Apache/mod_proxy 转发到 tomcat servlet

java - 在Java中验证Http请求的方法?

php - 基于键将大型关联数组转换为局部变量

php - Symfony2 : init EntityType field with empty data

java - 多个异步下载

java - 从不同线程调用时查询超时

python - 如果同时读取和追加同一个文件(python 编程),会发生什么情况?

wordpress - Varnish 返回错误,重定向过多

php - 将数据插入数据库是不好的做法吗?

php - 查找数组中未出现的最小正整数