2010-06-01 180 views
3

我怎樣才能確保startProcess();函數被調用,但沒有停止執行myFunction()。我猜測有一種方法可以調用一個函數並阻止它返回它的值來完成這個任務?PHP:防止函數返回值?

僞代碼:

function myFunction() { 

    startProcess(); 

    return $something;  
} 

function startProcess() { 
    sleep(5); 
    // Do stuff that user doesn't should have to wait for. 
} 

回答

1

據我可以從你的問題和標籤告訴,你想要做一些背景處理,實際上意味着多個線程。

不幸的是,PHP不這樣做。有一些IO功能是異步的,但通常你不能在PHP中進行併發處理。

1

什麼是你想要startProcess()做什麼?有很多方法可以讓用戶不必等待。

電子郵件是一個很好的例子:運行mail()的線程將一直旋轉,直到消息被接受或拒絕;你不希望用戶不得不等待。所以你排隊完成任務,然後在cron上處理你的隊列。

function myFunction() { 
    addToQueue(); 
    return $something;  
} 

function addToQueue() { 
    // add stuff to the queue of tasks 
} 

function runQueue() { 
    // process the queue of tasks; called by cron. 
} 
1

你看了Gearman爲了種出這種背景任務嗎?