代码之家  ›  专栏  ›  技术社区  ›  Jeremy French

你能知道hook nodapia(或任何hook)是从批处理模式运行的吗?

  •  2
  • Jeremy French  · 技术社区  · 15 年前

    我有一个drupal模块,它通过hook_nodapi在节点保存时执行SOAP请求。这对于单个保存来说并不是一个很大的性能损失,但是如果以批处理模式保存数千个节点,这是一个很大的瓶颈。

    我想在从批处理模式调用钩子时执行不同的操作,但看不到一个简单的方法来说明这一点。

    有人有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Henrik Opel    15 年前

    你可以打电话 batch_get() 检查结果。如果不为空,则表示您处于批处理模式。

    (注:此处假设为Drupal-6)

        2
  •  1
  •   FGM    15 年前

    如果要引用Drupal级别的批处理,请使用 Batch API 亨里克的建议是最好的。

    但是,如果您正在引用一个shell驱动的批处理过程,这对于大型批处理比基于Web的批处理更实用,那么您可以测试 php_sapi_name() :如果返回是 "cli" ,然后它是命令行,可以是shell批处理。取决于你的背景

        3
  •  0
  •   googletorp    15 年前

    您可以使用在脚本开头设置的全局变量,并在结尾取消设置/更改值。然后,您可以检查钩子中的全局var,如果它设置了某个值,就什么也不做。