无法从Laravel Command启动Thread

时间:2016-09-27 08:49:30

标签: php multithreading laravel-5 pthreads

我是php的新手。我已经了解到无法通过Web服务器从apache启动它,所以我已经使用laravel命令从命令行运行它但是当我调用它时我收到此错误 开始() 线程的方法

@SerializedName("_id")
private Id id;

但是每当我调用run方法时错误都会消失,这不是可行的方法。

我真的很感激我能得到的任何帮助。

我的命令的句柄方法如此

PHP Fatal error:  Uncaught Exception: Serialization of 'Closure' is not allowed in [no active file]:0

Stack trace:

#0 {main}

thrown in [no active file] on line 0

我的ThreadClass就是这个

public function handle()
{
    $threads = ["Thread One", "Thread Two"];
    $threadList=[];
    foreach ($threads as &$thread){
        //$id++;
        $this->info($thread);
        $testThread = new TestThread($thread);
        $testThread->start();
        $threadList[] = $testThread;
    }

    foreach ($threadList as $thread){
        $this->info("waiting for thread ". $thread->getThreadID());
        $thread->join();
        $this->info($thread->getThreadID()."done ");
        //echo $thread->getThreadID().'<br/>';
    }
}

1 个答案:

答案 0 :(得分:4)

我通过在start函数中添加以下参数找到了我的问题的解决方案

$testThread->start(PTHREADS_INHERIT_ALL ^ PTHREADS_INHERIT_CLASSES);

这个问题Fatal error while starting threads within symfony command

提供