在Ubuntu 3.13.0-66-generic上使用PHP7 RC7和pthreads的最新开发版:3.1.0-dev
我已经将问题缩小到一个简单的测试用例,我得到的const值不符合预期。
以下代码输出:value:v
应该是:value:|
const的值没有变化,如果我var_dump它,它仍然是|,但是当它与字符串'值连接时:'它似乎取字符串的第一个字符而不是const的值。我认为它有某种记忆泄漏。我的代码?或者也许是一个错误?
如果字符串'值似乎只会导致问题:'使用const是6个或更少的字符。在此之上,似乎很好。
如果我制作cacheRecord' Threaded'然后它确实解决了问题,但我之后无法删除/取消设置数组值,因为它是不可变的。
<?php
const FIELD_SEP = '|';
class cacheRecord
{
public $field1;
public $field2;
}
class cache extends Threaded
{
public function run()
{}
}
class socketThread extends Thread
{
public function __construct($cache)
{
$this->cacheLogin = $cache;
}
public function run()
{
$cl = new cacheRecord;
$cl->field1 = 'test123';
$this->cacheLogin['myhash'] = $cl;
$testString = FIELD_SEP.$cl->field1;
echo 'value:'.FIELD_SEP."\n";
unset($this->cacheLogin['myhash']);
}
}
$cache = new cache;
// Main
$socketThread = new socketThread($cache);
$socketThread->start();
$socketThread->join();
答案 0 :(得分:2)
您在该pthreads版本中发现了一个错误,它已在v3.1.1中修复