我有一个c ++共享库,它同时由nodejs和php扩展使用。 即时通讯面临着关于c ++库中共享变量的奇怪问题。 我有我的c ++库
vector<string> support_list;
void _generateSupporList() {
//.....
support_list.push_back("test1");
}
void __attribute__ ((constructor)) lib_init(void) {
// when this code is called the php extension will always see 1 element in the array
_generateSupporList();
}
myClass {
public:
appendSupportedList();
}
myClass::appendSupportedList(string item){
cout << support_list.size();
// when i append the same array i'll have 2 elements temporarily.. but when i do another call(new user request from browser) i'll see one element only "test1"..
support_list.push_back(item);
}
现在假设我们有用户请求 - &gt; http://example.com/test.php?append=val
在test.php中我调用php扩展,后者又调用c ++ api。
所以在test.php中:
$class = new myClass();//defined in the php extension
$class->appendSupportedList($_GET['append']); //this line will append support_list with "val"..
另一位用户请求了同一页面 - &gt; http://example.com/test.php?append=val2执行相同的代码,我们将在support_list中添加一个新项目。
当用户调用test.php 10次时,我总是得到相同的support_list大小。
我希望从上面的代码中得到
请求1 - &gt; support_list.size()= 1
请求2 - &gt; support_list.size()= 2
请求3 - &gt; support_list.size()= 3
但我总是有support_list.size()= 1 //这是“lib_init”添加的那个