2011-11-20 96 views
0

我有一段需要一段時間才能處理的腳本,它必須從數據庫取得內容並將數據傳輸到其他服務器。背景PHP工作人員

目前,我已經在表單提交後立即執行該操作,並且需要花費時間傳輸該數據以表明其已發送。

我在想,是不是要讓它在客戶端前面做這個過程?

我不想要一個cron,因爲它需要在同一時間發送,但只是不加載客戶端。

+0

可能重複的[我怎麼能實現一個任務,應該在PHP線程中完成](http://stackoverflow.com/questions/6841830/how-can-i-achieve-a-task-這應該是在線程在php) – Gordon

+0

更多相關的問題:http://stackoverflow.com/search?q=background+process+php – Gordon

+0

並看看http:// stackoverflow。 com/search?q = gearman + php – Gordon

回答

1

幾個選項:

  1. Exec的PHP腳本,並DB工作在自己的網頁,但不等待EXEC的輸出。請仔細閱讀非常詳細,不要盲目接受來自用戶的任何輸入參數,而不必對其進行消毒。我只提到這是一個選擇,我絕不會自己做。

  2. 讓您的數據庫更新腳本始終在後臺運行,查詢觸發其更新的事情。例如,可以檢查/tmp/run.txt是否存在,如果存在,將會啓動數據庫更新。然後,您可以從您的網頁創建run.txt並返回而無需等待響應。

  3. 將您的數據庫更新腳本創建爲守護進程。

+0

製作守護進程需要什麼?是否需要服務器的任何要求? –

0

這裏有一些事情你可以看看:

多少數據你轉移,並通過轉移是它更像是一個數據唯一拷貝和粘貼,或者是你插入從數據你的數據庫到目標服務器,然後從你的源刪除數據?

您可以嘗試分析您的SQL,看看是否有任何優化空間。

然後你可以檢查你的php代碼,看看是否有什麼,即使是最細微的,也可以幫助更快地完成必要的任務。

源和目標數據庫服務器位於哪裏(就網絡和地理位置而言,如果您碰巧知道)以及源服務器和目標服務器能夠通過網絡/網絡進行通信的速度有多快?