CakePHP 3.0 “找不到线程类”


CakePHP 3.0 "thread class not found"

我想在 CakePHP 3.0 中实现线程概念,但是当我尝试扩展线程类时,它给出了"找不到线程类"的错误

我还在核心 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();
?>   

而在蛋糕中 PHP 3

class AsyncOperation extends Thread

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

我也不确定你尝试做什么,但我建议不要看一下像 RabbitMQ 或 ZeroMQ 这样的工作队列。

你的 php 版本没有线程类。默认情况下,如果将其安装在 LINUX 上,则不会有线程类。

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

这就是我在 Linux 上所做的:

在 redhat 上启用 zts - php 上的 pthreads

只需添加简单的行

use Thread;