我想在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
答案 0 :(得分:1)
您想了解namespaces in php。蛋糕和几乎所有的lib现在都使用它们。如果在当前类所在的命名空间中不存在类,则需要使用use
关键字并从另一个命名空间导入该类。或者,不是最佳实践,提供绝对命名空间。
此外,我不确定您尝试做什么,但我建议您不要使用线程来查看像RabbitMQ或ZeroMQ这样的工作队列。
答案 1 :(得分:0)
你的php版本没有线程类。默认情况下,如果您在LINUX上安装它,您将无法获得线程类。
你需要下载php源代码,启用zts然后编译它。
这就是我在linux上的表现:
答案 2 :(得分:0)
只需添加简单的
use Thread;