2015-05-16 38 views
0

我想用php線程異步加載執行mysql存儲過程的函數。存儲過程需要花費很多時間才能加載,因此保持異步是唯一最佳解決方案。我不知道如何將線程拖入laravel。 Laravel hs隊列,但是,我想直接用線程腳本來完成。請有人幫我解決這個問題。如何在laravel中使用線程來運行存儲過程

+0

[pthreads](https://github.com/krakjoe/pthreads)庫提供了在PHP中使用線程所需的幫助器。 – peaceman

+0

@peaceman感謝您的信息 – winnyboy5

回答

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部分只會執行一次$ thr eadedMethod已結束。

希望它有幫助!