如何在laravel中使用线程来运行存储过程

时间:2015-05-16 13:43:49

标签: php mysql multithreading stored-procedures laravel-4

我想使用php线程异步加载执行mysql存储过程的函数。我发现,存储过程需要花费大量时间来加载,因此保持异步是唯一的最佳解决方案。我不知道如何将拉线带入laravel。 Laravel排队但是,我想直接在脚本中用线程来做。有人请帮帮我。

1 个答案:

答案 0 :(得分:1)

我为解决类似问题所做的工作(我在同步命令中完成)是创建一个从Thread扩展并从laravel代码调用它的类。

您的案例中的类可能是这样的:

class LaravelWorker extends Thread
{
    private $object;

    public function __construct($object)
    {
        $this->object = $object;
    }

    public function run()
    {
        $object->runProcedure();
    }
}

你可以在你的代码中调用它:

$object = new ObjectWithProcedure();
$threadedMethod = new LaravelWorker($object);
$threadedMethod->start();

如果由于某种原因,你需要等到$ threadedMethod完成,你可以做

$threadedMethod->join();
(more_code...)

而more_code部分只会在$ threadedMethod结束后执行。

希望它有所帮助!