<?php error_reporting(E_ALL ^ E_NOTICE); include "../www/global.php"; chdir(dirname(__FILE__)); SLog::$LOGFILE = "log/run.log"; SConfig::$CACHE = false; $info = array(); for (;;) { usleep(1000 * 500); $config = SConfig::parse("backend.conf"); foreach ($config as $conf) { if (!empty($conf->app) || !empty($conf->interval)) { if (empty($info[$conf->app]['starttime']) || $info[$conf->app]['starttime'] + $conf->interval <= time()) { $info[$conf->app]['starttime'] = time(); $fname = _tmpDir() . "/crontab.pid." . $info[$conf->app]['pid']; if (!empty($info[$conf->app]['pid']) && file_exists($fname)) { $fp = fopen($fname, "r"); if (flock($fp, LOCK_SH | LOCK_NB) == false) { //上次运行的进程还没有结束 fclose($fp); continue; } fclose($fp); } $ret = pcntl_fork(); $command = $conf->app; if (!empty($conf->params)) { $params = $conf->params; } else { $params = new stdclass();