Changeset 12441

Show
Ignore:
Timestamp:
02/14/08 10:48:08 (11 months ago)
Author:
pottedmeat
Message:

Refs #5602. Update cron to run a limited number of files at a time

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • util/branches/dev/jsdoc/jsdoc.module

    r12439 r12441  
    412412  // Validate the stuff added in the newly included file 
    413413  if (_jsdoc_cron_validate_include()) { 
    414     $files = call_user_func(_jsdoc_base() . '_get_files'); 
     414    $files = variable_get('jsdoc_cron_files', array()); 
     415    if (!empty($files)) { 
     416      call_user_func(_jsdoc_base() . '_get_files'); 
     417      print count($files) . ' files left<br>'; 
     418    }else{ 
     419      db_query("UPDATE {jsdoc_cache} SET used = 0"); 
     420      foreach (jsdoc_projects() as $project) { 
     421        $version = jsdoc_version_node_load('HEAD', $project); 
     422        db_query("UPDATE {jsdoc_resources} SET used = 0 WHERE used = 1 AND version = %d", $version->nid); 
     423      } 
     424      $files = call_user_func(_jsdoc_base() . '_get_files'); 
     425    } 
    415426    if (!is_array($files)) { 
    416427      watchdog('jsdoc', _jsdoc_base() . '_get_files' . t(' does not return an array in ') . _jsdoc_file_location(), WATCHDOG_ERROR); 
     
    429440      variable_set('jsdoc_cron_time', time()); 
    430441 
    431       db_query("UPDATE {jsdoc_cache} SET used = 0"); 
    432       foreach (jsdoc_projects() as $project) { 
    433         $version = jsdoc_version_node_load('HEAD', $project); 
    434         db_query("UPDATE {jsdoc_objects} SET used = 0 WHERE used = 1 AND version = %d", $version->nid); 
    435         db_query("UPDATE {jsdoc_resources} SET used = 0 WHERE used = 1 AND version = %d", $version->nid); 
    436       } 
    437       unset($project); 
    438       unset($version); 
    439  
     442      $count = 0; 
     443      $limit = 25; 
    440444      foreach ($files as $list) { 
     445        if($count == $limit){ 
     446          if(count($files) <= $limit){ 
     447            variable_set('jsdoc_cron_files', array()); 
     448          }else{ 
     449            variable_set('jsdoc_cron_files', array_slice($files, $limit)); 
     450          } 
     451          break; 
     452        } 
     453        ++$count; 
    441454        list($namespace, $file_name) = $list; 
    442455        unset($list); 
     
    458471          } 
    459472          else { 
     473            print 'cache hit ' . $cache->filepath . '<br>'; 
    460474            db_query("UPDATE {jsdoc_cache} SET used = 1 WHERE namespace = '%s' AND filepath = '%s'", $namespace, $file_name); 
    461475            $contents = unserialize(file_get_contents($cache_dir . $cache->cid)); 
     
    473487          $provides_node = _jsdoc_resource_get_or_create($contents['#provides'], $namespace); 
    474488          $resource_node = _jsdoc_resource_get_or_create($contents['#resource'], $namespace); 
     489 
     490          db_query("UPDATE {jsdoc_objects} SET used = 0 WHERE used = 1 AND version = %d AND resource_vid = %d", $version->nid, $resource_node->vid); 
     491 
     492          unset($project); 
     493          unset($version); 
     494 
    475495          db_query("UPDATE {jsdoc_resources} SET used = 1 WHERE vid = %d", $provides_node->vid); 
    476496          db_query("UPDATE {jsdoc_resources} SET used = 1 WHERE vid = %d", $resource_node->vid);