我想在 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;