CakePHP 3.0"找不到线程类"

时间:2016-01-25 13:15:43

标签: php multithreading cakephp cakephp-3.0

我想在CakePHP 3.0中实现threading概念, 但是当我尝试扩展线程类时,它会给出错误#34;未找到Thread类"

我也在核心php中实现了它并按预期工作 但不知怎的,它不能与cakephp合作。

这是corephp代码

<?php

class AsyncOperation extends Thread {

    public function __construct($arg) {
        $this->arg = $arg;
    }

    public function run() {
        if ($this->arg) {
            $sleep =  rand(1,60);
            for ($i=0; $i < 100 ; $i++) { 
                sleep(1);
                echo $this->arg."----------->".$i."<br/>";    
            }
        }
    }
}

class CallingClass {
    public function runScript($var)
    {
        print_r("start run script");
        $th = new AsyncOperation($var);
        $th->start();
        print_r("continue running");

    }
}

$wow =  new AsyncOperation("First");
$wow->start();
$wow2 =  new AsyncOperation("Last");
$wow2->start();
?>   

在CakePHP 3中

class AsyncOperation extends Thread

3 个答案:

答案 0 :(得分:1)

您想了解namespaces in php。蛋糕和几乎所有的lib现在都使用它们。如果在当前类所在的命名空间中不存在类,则需要使用use关键字并从另一个命名空间导入该类。或者,不是最佳实践,提供绝对命名空间。

此外,我不确定您尝试做什么,但我建议您不要使用线程来查看像RabbitMQ或ZeroMQ这样的工作队列。

答案 1 :(得分:0)

你的php版本没有线程类。默认情况下,如果您在LINUX上安装它,您将无法获得线程类。

你需要下载php源代码,启用zts然后编译它。

这就是我在linux上的表现:

Enable zts on redhat - pthreads on php

答案 2 :(得分:0)

只需添加简单的

use Thread;