root/c3crm/sugarcrm/trunk/schedulers.php
Revision 316 (by c3crm, 12/29/05 13:27:53) |
---|
<?php /********************************************************************************* * The contents of this file are subject to the SugarCRM Public License Version * 1.1.3 ("License"); You may not use this file except in compliance with the * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * All copies of the Covered Code must include on each user interface screen: * (i) the "Powered by SugarCRM" logo and * (ii) the SugarCRM copyright notice * in the same form as they appear in the distribution. See full license for * requirements. * * The Original Code is: SugarCRM Open Source * The Initial Developer of the Original Code is SugarCRM, Inc. * Portions created by SugarCRM are Copyright (C) 2004-2005 SugarCRM, Inc.; * All Rights Reserved. * Contributor(s): ______________________________________. ********************************************************************************/ /********************************************************************************* * Description: * Created On: Oct 11, 2005 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. * All Rights Reserved. * Contributor(s): Chris Nojima ********************************************************************************/ require_once('include/utils.php'); clean_special_arguments(); require_once('include/dir_inc.php'); require_once('include/utils/file_utils.php'); require_once('config.php'); if(empty($GLOBALS['log'])) { require('log4php/LoggerManager.php'); } if(empty($sugar_config)) { require_once('config.php'); } $GLOBALS['log'] = LoggerManager::getLogger('SugarCRM'); /////////////////////////////////////////////////////////////////////////////// //// PREP FOR SCHEDULER PID $cachePath = 'cache/modules/Schedulers'; $pid = 'pid'; if(!is_dir($cachePath)) { mkdir_recursive($cachePath); } if(!is_file($cachePath.'/'.$pid)) { write_array_to_file('timestamp', array(strtotime(date('H:i'))) , $cachePath.'/'.$pid); require_once($cachePath.'/'.$pid); } else { require_once($cachePath.'/'.$pid); } //// END PREP FOR SCHEDULER PID /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// //// EXECUTE IF VALID TIME (NOT DDOS) //if($timestamp[0] < strtotime(date('H:i'))) { if(true) { write_array_to_file('timestamp', array(strtotime(date('H:i'))) , $cachePath.'/'.$pid); if(!unlink($cachePath.'/'.$pid)) { // remove cache file } if(empty($GLOBALS['log'])) { // setup logging require_once('log4php/LoggerManager.php'); $GLOBALS['log'] = LoggerManager::getLogger('SugarCRM'); } if((!empty($_REQUEST['type'])) && ($_REQUEST['type'] == 'job')) { // spin off a "job" thread if(!empty($_REQUEST['job_id'])) { require_once('modules/SchedulersJobs/SchedulersJob.php'); // if run from cron, we need to run jobs as Admin if(empty($current_user)) { require_once('modules/Users/User.php'); $current_user = new User(); $current_user->retrieve('1'); } $job_id = $_REQUEST['job_id']; ob_implicit_flush(); ignore_user_abort(true); // keep processing if browser is closed set_time_limit(0); // no timeout to allow long jobs (mass-mailings) to go through $job = new SchedulersJob(); $job->retrieve($_REQUEST['record']); $job->runtime = gmdate('Y-m-d H:i:s', strtotime('now')); if($job->startJob($job_id)) { $GLOBALS['log']->debug('----->Job [ '.$job_id.' ] was fired successfully'); return; } else { $GLOBALS['log']->fatal('JOB FAILURE job [ '.$job_id.' ] could not complete successfully.'); return; } } else { $GLOBALS['log']->fatal('JOB FAILURE schedulers.php called with no job_id. Suiciding this thread.'); die(); } } } ?>
Note: See TracBrowser for help on using the browser.