首页 > 解决方案 > 在单独的线程中从 zval* 读取值 - PHP 扩展 c++

问题描述

我正在使用Centos 7PHP - 5.6.36线程安全 - 禁用)我已经在c++中创建了PHP扩展来存储函数调用堆栈跟踪。

存储信息从 开始PHP_RINIT_FUNCTION,以 结束PHP_RSHUTDOWN_FUNCTION

在这里,我使用持久内存分配来存储值,最终结果将存储在 zval* 可以解析的格式中。我把它推到了vector(m_resultVect)每个请求关闭方法called(PHP_RSHUTDOWN_FUNCTION)中。在另一个线程中,我将其交换vector (m_resultVect)到其他线程,然后尝试解析 zval* 以获取调用堆栈跟踪信息。但我无法访问 zval*。

为什么我不能在另一个线程中访问?它会被zendMM自动清除吗?

.

标签: phpc++centos7php-internals

解决方案


推荐阅读