pthreads const字符串损坏

时间:2015-11-20 10:24:17

标签: php multithreading pthreads

在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();

1 个答案:

答案 0 :(得分:2)

您在该pthreads版本中发现了一个错误,它已在v3.1.1中修复