2009-09-25 62 views
2

我有一個Drupal模塊,它通過hook_nodapi在節點上執行soap請求。這對個人保存來說並不是很大的性能損失,但是如果成千上萬的節點正在以批處理模式保存,這是一個很大的瓶頸。你能否告訴鉤子nodapia(或任何掛鉤)是否從批處理模式運行?

我想在從批處理模式調用掛鉤時執行不同的操作,但看不到一個簡單的方法來說明這一點。

有沒有人有任何想法?

回答

3

您可以撥打batch_get()並檢查結果。如果它不是空的,則處於批處理模式。

(注:假設Drupal的6這裏)

0

您可以使用您在腳本開始時設置的全局變量,並在最後取消設置/更改值。然後你可以在你的鉤子中檢查這個全局變量,並且如果它被設置爲一個特定的值,什麼也不做。

+0

這將適用於我編寫的批處理過程,但不適用於任何其他批處理過程。 – 2009-09-26 08:59:28

1

如果你正在做參考使用Batch API一個Drupal級批,Henrik的建議是最好的。

但是,如果您正在參考外殼驅動的批處理過程(對於大批量比基於Web的批處理更爲實用),則可以測試php_sapi_name():如果返回是"cli",那麼它是命令行和可以是一批殼。取決於你的上下文

+0

我指的是批處理API,但感謝提示。 – 2009-09-28 05:39:25