Класс потока CakePHP 3.0 не найден

Я хочу реализовать концепцию threading в 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();
?>   

А в CakePHP 3

class AsyncOperation extends Thread

person Vivek Doshi    schedule 25.01.2016    source источник


Ответы (3)


Вы хотите узнать о пространствах имен в php. В наши дни Cake и почти все библиотеки их используют. Вам нужно использовать ключевое слово use и импортировать класс из другого пространства имен, если он не существует в пространстве имен, в котором находится ваш текущий класс. Или, что не совсем лучшая практика, укажите абсолютное пространство имен.

Также я не уверен, что вы пытаетесь сделать, но вместо потоков я бы рекомендовал взглянуть на рабочие очереди, такие как RabbitMQ или ZeroMQ.

person floriank    schedule 25.01.2016

В вашей версии php нет класса потока. По умолчанию, если вы установите его в LINUX, у вас не будет класса потока.

Вам необходимо загрузить исходный код php, включить zts и затем скомпилировать его.

Вот как я поступил в Linux:

Включить zts на redhat - pthreads на php

person Danyal Sandeelo    schedule 25.01.2016
comment
Спасибо за ответ, но у нас уже есть установленная библиотека потоков и она отлично работает с corephp, но в cakephp отображается ошибка. - person Vivek Doshi; 25.01.2016

Просто добавьте простую линию

use Thread;
person Vivek Doshi    schedule 26.01.2016