Server : Apache System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 User : www ( 1000) PHP Version : 5.6.40 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/saimikebio.com/ecshopjcw/ |
<?php /** * ECSHOP 计划任务 * =========================================================== * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。 * 网站地址: http://www.ecshop.com; * ---------------------------------------------------------- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和 * 使用;不允许对程序代码以任何形式任何目的的再发布。 * ========================================================== * $Author: liubo $ * $Id: cron.php 17217 2011-01-19 06:29:08Z liubo $ */ define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $_REQUEST['act'] = trim($_REQUEST['act']); admin_priv('cron'); $exc = new exchange($ecs->table('crons'), $db, 'cron_code', 'cron_name'); if ($_REQUEST['act'] == 'list') { $cron_list = array(); $sql = "SELECT * FROM " . $ecs->table('crons'); $res = $db->query($sql); while ($row = $db->fetchRow($res)) { $cron_list[$row['cron_code']] = $row; } $modules = read_modules('../includes/modules/cron'); for ($i = 0; $i < count($modules); $i++) { $code = $modules[$i]['code']; /* 如果数据库中有,取数据库中的名称和描述 */ if (isset($cron_list[$code])) { $modules[$i]['name'] = $cron_list[$code]['cron_name']; $modules[$i]['desc'] = $cron_list[$code]['cron_desc']; $modules[$i]['cron_order'] = $cron_list[$code]['cron_order']; $modules[$i]['enable'] = $cron_list[$code]['enable']; $modules[$i]['nextime'] = local_date('Y-m-d/H:i:s',$cron_list[$code]['nextime']); $modules[$i]['thistime'] = $cron_list[$code]['thistime'] ? local_date('Y-m-d/H:i:s',$cron_list[$code]['thistime']) : '-'; $modules[$i]['install'] = '1'; } else { $modules[$i]['name'] = $_LANG[$modules[$i]['code']]; $modules[$i]['desc'] = $_LANG[$modules[$i]['desc']]; $modules[$i]['nextime'] = '-'; $modules[$i]['thistime'] = '-'; $modules[$i]['install'] = '0'; } } assign_query_info(); $smarty->assign('ur_here', $_LANG['07_cron_schcron']); $smarty->assign('modules', $modules); $smarty->display('cron_list.htm'); } elseif ($_REQUEST['act'] == 'install') { if (empty($_POST['step'])) { /* 取相应插件信息 */ $set_modules = true; include_once(ROOT_PATH.'includes/modules/cron/' . $_REQUEST['code'] . '.php'); $data = $modules[0]; $cron['cron_code'] = $data['code']; $cron['cron_act'] = 'install'; $cron['cron_name'] = $_LANG[$data['code']]; $cron['cron_desc'] = $_LANG[$data['desc']]; $cron['cron_config'] = array(); if (!empty($data['config'])) { foreach ($data['config'] AS $key => $value) { $cron['cron_config'][$key] = $value + array('label' => $_LANG[$value['name']], 'value' => $value['value']); if ($cron['cron_config'][$key]['type'] == 'select') { $cron['cron_config'][$key]['range'] = $_LANG[$cron['cron_config'][$key]['name'] . '_range']; } } } list($day, $week, $hours) = get_dwh(); assign_query_info(); $page_list = array( 'index' => 0, 'user' => 0, 'pick_out' => 0, 'flow' => 0, 'group_buy' => 0, 'snatch' => 0, 'tag_cloud' => 0, 'category' => 0, 'goods' => 0, 'article_cat' => 0, 'article' => 0, 'brand' => 0, 'search' => 0, ); $smarty->assign('days', $day); $smarty->assign('page_list', $page_list); $smarty->assign('week', $week); $smarty->assign('hours', $hours); $smarty->assign('cron', $cron); $smarty->display('cron_edit.htm'); } elseif ($_POST['step'] == 2) { $links[] = array('text' => $_LANG['back_list'], 'href' => 'cron.php?act=list'); if (empty($_POST['cron_name'])) { sys_msg($_LANG['cron_name'] . $_LANG['empty']); } $sql = "SELECT COUNT(*) FROM " . $ecs->table('crons') . " WHERE cron_code = '$_POST[cron_code]'"; if ($db->GetOne($sql) > 0) { sys_msg($_LANG['cron_code'] . $_LANG['repeat'], 1); } /* 取得配置信息 */ $cron_config = array(); if (isset($_POST['cfg_value']) && is_array($_POST['cfg_value'])) { $temp = count($_POST['cfg_value']); for ($i = 0; $i < $temp; $i++) { $cron_config[] = array('name' => trim($_POST['cfg_name'][$i]), 'type' => trim($_POST['cfg_type'][$i]), 'value' => trim($_POST['cfg_value'][$i]) ); } } $cron_config = serialize($cron_config); $cron_minute = get_minute($_POST['cron_minute']); if ($_POST['ttype'] == 'day') { $cron_day = $_POST['cron_day']; $cron_week = ''; } elseif($_POST['ttype'] == 'week') { $cron_day = ''; $cron_week = $_POST['cron_week']; } else { $cron_day = $cron_week = ''; } if ($cron_week == 7) { $cron_week = 0; } $_POST['alow_files'] = isset($_POST['alow_files']) ? implode(' ', $_POST['alow_files']) : ""; !isset($_POST['cron_run_once']) && $_POST['cron_run_once'] = 0; $cron_hour = $_POST['cron_hour']; $cron = array('day'=>$cron_day,'week'=>$cron_week,'m'=>$cron_minute,'hour'=>$cron_hour); $next = get_next_time($cron); $sql = "INSERT INTO " . $ecs->table('crons') . " (cron_code, cron_name, cron_desc, cron_config, nextime, day, week, hour, minute, run_once, allow_ip, alow_files)" . "VALUES ('$_POST[cron_code]', '$_POST[cron_name]', '$_POST[cron_desc]', '$cron_config', '$next', '$cron_day', '$cron_week', '$cron_hour', '$cron_minute', '$_POST[cron_run_once]', '$_POST[allow_ip]', '$_POST[alow_files]')"; $db->query($sql); sys_msg($_LANG['install_ok'], 0, $links); } } elseif ($_REQUEST['act'] == 'edit') { if (empty($_POST['step'])) { if (isset($_REQUEST['code'])) { $_REQUEST['code'] = trim($_REQUEST['code']); } else { die('invalid cron'); } $sql = "SELECT * FROM " . $ecs->table('crons') . " WHERE cron_code = '$_REQUEST[code]'"; $cron = $db->getRow($sql); if (empty($cron)) { $links[] = array('text' => $_LANG['back_list'], 'href' => 'cron.php?act=list'); sys_msg($_LANG['cron_not_available'], 0, $links); } /* 取相应插件信息 */ $set_modules = true; include_once(ROOT_PATH . 'includes/modules/cron/' . $_REQUEST['code'] . '.php'); $data = $modules[0]; /* 取得配置信息 */ $cron['cron_config'] = unserialize($cron['cron_config']); if (!empty($cron['cron_config'])) { foreach ($cron['cron_config'] AS $key => $value) { $cron['cron_config'][$key]['label'] = $_LANG[$value['name']]; if ($cron['cron_config'][$key]['type'] == 'select') { $cron['cron_config'][$key]['range'] = $_LANG[$cron['cron_config'][$key]['name'] . '_range']; } } } $cron['cron_act'] = 'edit'; $cron['cronweek'] = $cron['week'] == '0' ? 7 : $cron['week']; $cron['cronday'] = $cron['day']; $cron['cronhour'] = $cron['hour']; $cron['cronminute'] = $cron['minute']; $cron['run_once'] && $cron['autoclose'] = 'checked'; list($day, $week, $hours) = get_dwh(); $page_list = array( 'index' => 0, 'user' => 0, 'pick_out' => 0, 'flow' => 0, 'group_buy' => 0, 'snatch' => 0, 'tag_cloud' => 0, 'category' => 0, 'goods' => 0, 'article_cat' => 0, 'article' => 0, 'brand' => 0, 'search' => 0, ); $cron['alow_files'] .= " "; foreach(explode(' ', $cron['alow_files']) as $k=>$v) { $v = str_replace('.php', '', $v); if(!empty($v)) { $page_list[$v] = 1; } } assign_query_info(); $smarty->assign('ur_here', $_LANG['edit'] . $_LANG['cron_code']); $smarty->assign('cron', $cron); $smarty->assign('days', $day); $smarty->assign('week', $week); $smarty->assign('hours', $hours); $smarty->assign('page_list', $page_list); $smarty->display('cron_edit.htm'); } elseif($_POST['step'] == 2) { $links[] = array('text' => $_LANG['back_list'], 'href' => 'cron.php?act=list'); if (empty($_POST['cron_id'])) { sys_msg($_LANG['cron_not_available'], 0, $links); } $cron_config = array(); if (isset($_POST['cfg_value']) && is_array($_POST['cfg_value'])) { $temp = count($_POST['cfg_value']); for ($i = 0; $i < $temp; $i++) { $cron_config[] = array('name' => trim($_POST['cfg_name'][$i]), 'type' => trim($_POST['cfg_type'][$i]), 'value' => trim($_POST['cfg_value'][$i]) ); } } $cron_config = serialize($cron_config); $cron_minute = get_minute($_POST['cron_minute']); if ($_POST['ttype'] == 'day') { $cron_day = $_POST['cron_day']; $cron_week = ''; } elseif($_POST['ttype'] == 'week') { $cron_day = ''; $cron_week = $_POST['cron_week']; } else { $cron_day = $cron_week = ''; } if ($cron_week == 7) { $cron_week = 0; } $_POST['alow_files'] = isset($_POST['alow_files']) ? implode(' ', $_POST['alow_files']) : ""; !isset($_POST['cron_run_once']) && $_POST['cron_run_once'] = 0; //$_POST['cron_run_once'] = (int)$_POST['cron_run_once']; $cron_hour = $_POST['cron_hour']; $cron = array('day'=>$cron_day,'week'=>$cron_week,'m'=>$cron_minute,'hour'=>$cron_hour); $next = get_next_time($cron); $sql = "UPDATE " . $ecs->table('crons') . "SET cron_name = '$_POST[cron_name]', cron_desc = '$_POST[cron_desc]', cron_config = '$cron_config', nextime='$next', day = '$cron_day', week = '$cron_week', hour = '$cron_hour', minute = '$cron_minute', run_once = '$_POST[cron_run_once]', allow_ip = '$_POST[allow_ip]', alow_files = '$_POST[alow_files]'" . "WHERE cron_id = '$_POST[cron_id]' LIMIT 1"; $db->query($sql); sys_msg($_LANG['edit_ok'], 0 ,$links); } } elseif ($_REQUEST['act'] == 'uninstall') { $sql = "DELETE FROM " . $ecs->table('crons') . "WHERE cron_code = '$_REQUEST[code]' LIMIT 1"; $db->query($sql); $links[] = array('text' => $_LANG['back_list'], 'href' => 'cron.php?act=list'); sys_msg($_LANG['uninstall_ok'], 0, $links); } elseif ($_REQUEST['act'] == 'toggle_show') { $id = trim($_POST['id']); $val = intval($_POST['val']); $sql = "UPDATE " . $ecs->table('crons') . "SET enable = '$val' " . "WHERE cron_code = '$id' LIMIT 1"; $db->query($sql); make_json_result($val); } elseif ($_REQUEST['act'] == 'do') { if (isset($set_modules)) { $set_modules = false; unset($set_modules); } if (file_exists(ROOT_PATH.'includes/modules/cron/' . $_REQUEST['code'] . '.php')) { $cron = array(); $sql = "SELECT cron_config FROM " . $ecs->table('crons') . " WHERE cron_code = '$_REQUEST[code]'"; $temp = $db->getRow($sql); $temp = unserialize($temp['cron_config']); if (!empty($temp)) { foreach ($temp as $key => $val) { $cron[$val['name']] = $val['value']; } } include_once(ROOT_PATH.'includes/modules/cron/' . $_REQUEST['code'] . '.php'); $timestamp = gmtime(); $sql = "UPDATE " . $ecs->table('crons') . "SET thistime = '$timestamp' " . "WHERE cron_code = '$_REQUEST[code]' LIMIT 1"; $db->query($sql); } $links[] = array('text' => $_LANG['back_list'], 'href' => 'cron.php?act=list'); sys_msg($_LANG['do_ok'], 0, $links); } function get_next_time($cron) { $timestamp = gmtime(); $y = local_date('Y', $timestamp); $mo = local_date('n', $timestamp); $d = local_date('j', $timestamp); $w = local_date('w', $timestamp); $h = local_date('G', $timestamp); $sh = $sm = 0; $sy = $y; if ($cron['day']) { $sd = $cron['day']; $smo = $mo; } else { $sd = $d; $smo = $mo; if ($cron['week'] !== '') { $sd += $cron['week'] - $w; } } if ($cron['hour']) { $sh = $cron['hour']; } $next = local_strtotime("$sy-$smo-$sd $sh:$sm:0"); //$next = gmmktime($sh,$sm,0,$smo,$sd,$sy); return $next; } function get_minute($cron_minute) { $cron_minute = explode(',',$cron_minute); $cron_minute = array_unique($cron_minute); foreach ($cron_minute as $key => $val) { if ($val) { $val = intval($val); $val < 0 && $val = 0; $val > 59 && $val = 59; $cron_minute[$key] = $val; } } return trim(implode(',',$cron_minute)); } function get_dwh() { $days = $week = $hours = array(); for ($i = 1 ; $i<=31 ; $i++) { $days[$i] = str_pad($i,2,'0',STR_PAD_LEFT); } for ($i = 1 ; $i<8 ; $i++) { $week[$i] = $GLOBALS['_LANG']['week'][$i]; } for ($i = 0 ; $i<24 ; $i++) { $hours[$i] = str_pad($i,2,'0',STR_PAD_LEFT); } return array($days,$week,$hours); } ?>