root/c3crm/sugarcrm/trunk/schedulers.php

Revision 316 (by c3crm, 12/29/05 13:27:53)

initial

<?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.