2012-01-27 60 views
1

我正在編寫一個安裝配置文件,並且如果用戶的max_execution_time和memory_limit值較低,我們會通知用戶。據我瞭解Drupal有檢查可能要求myprofile.install文件,所以我放在那裏以下幾點:在安裝配置文件中添加自定義需求。 Drupal 7

 function myprofile_requirements($phase) { 
      $requirements = array(); 
      // Min required PHP execution time 
      $min_time = 60; 
      // Min required memory limit, Mb 
      $min_memory = 128; 
      // Get current value of "max_execution_time" 
      $time = ini_get('max_execution_time'); 
      // Get current value of "max_execution_time" 
      $memory = ini_get('memory_limit'); 
      // Get "raw" numeric value 
      preg_match("|\d+|", $memory, $value); 
      $severity_time = ($time < $min_time) ? REQUIREMENT_WARNING : REQUIREMENT_OK; 
      $severity_memory = ($value[0] < $min_memory) ? REQUIREMENT_WARNING : REQUIREMENT_OK; 
      $t = get_t(); 
      if ($phase == 'install') { 
      $requirements['max_execution_time'] = array(
       'title' => $t('PHP max execution time'), 
       'value' => $t('Please increase the parameter "max_execution_time" in your PHP settings . Recommended value is at least @min sec. and more (now you have @current sec.', 
     array('@min' => $min_time, '@current' => $time)), 
       'severity' => $severity_time, 
    ); 
      $requirements['memory_limit'] = array(
       'title' => $t('PHP memory limit'), 
       'value' => $t('Please increase the parameter "memory_limit" in your PHP settings . Recommended value is at least @minM and more (now you have @current', 
     array('@min' => $min_memory, '@current' => $memory)), 
       'severity' => $severity_memory, 
    ); 
    } 
    return $requirements; 
} 

它不工作 - Drupal的簡單忽略上面的代碼。怎麼了?

回答

1

它看起來像hook_requirements()不會被調用的安裝配置文件,它調用在這幾個階段:

  • 安裝:正在安裝的模塊。
  • 更新:模塊已啓用並運行update.php。
  • 運行時:正在檢查運行時要求並在狀態報告頁面上顯示。

請注意,上面的install表示正在安裝的模塊,而不是整個安裝配置文件。

+0

「請注意,上面的安裝是指正在安裝的模塊,而不是整個安裝配置文件。」但安裝配置文件是一個模塊。 – ymakux 2012-01-27 22:11:30