function sig_handler($signo) { global $log_path; global $my_log; global $my_name; global $log_tag; global $my_tag; global $my_pidfile; global $pid; global $rm; // release resource such as db connection $my_log = $log_path . '/' . $my_name . '.' . date("Ymd") . '.log'; $msg = 'recv signal ' . $signo . '. exit now. pid=' . $pid; echo date("Ymd H:i:s") . ': ' . $my_tag . ': ' . $msg . "\n"; phplog($my_log, $log_tag, $msg); exec("{$rm} -rf {$my_pidfile} 2>/dev/null"); exit; }
function restart() { global $ps; global $awk; global $xargs; global $kill; global $php; global $rm; global $grep; global $bin_path; global $log_path; global $target_name; global $target_program; global $target_pidfile; global $target_alivefile; global $my_log; global $log_tag; $exec_ret_arr = array(); $cmd = $ps . ' -elf | ' . $grep . ' ' . $target_program . ' | ' . $grep . ' -v grep | ' . $grep . ' -v daemon.php | ' . $awk . " '{print \$4}' | " . $xargs . " -I {} " . $kill . ' -term {}'; exec($cmd, $exec_ret_arr); echo date("Ymd H:i:s") . ': ' . $cmd . "\n"; print_r($exec_ret_arr); phplog($my_log, $log_tag, $cmd); $cmd = $rm . " -rf {$target_pidfile} 2>/dev/null"; exec($cmd, $exec_ret_arr); echo date("Ymd H:i:s") . ': ' . $cmd . "\n"; print_r($exec_ret_arr); phplog($my_log, $log_tag, $cmd); $cmd = $rm . " -rf {$target_alivefile} 2>/dev/null"; exec($cmd, $exec_ret_arr); echo date("Ymd H:i:s") . ': ' . $cmd . "\n"; print_r($exec_ret_arr); phplog($my_log, $log_tag, $cmd); sleep(1); // restart. $cmd = $php . " -q {$bin_path}/{$target_program}.php {$target_name} >> {$log_path}/{$target_name}.{$target_program}.php.log 2>&1 &"; exec($cmd, $exec_ret_arr); echo date("Ymd H:i:s") . ': ' . $cmd . "\n"; print_r($exec_ret_arr); phplog($my_log, $log_tag, $cmd); }
<?php include 'db_config.php'; phplog('test log'); //phpinfo();
$mysql_connect = mysql_connect($db_ip, $db_user, $db_pw); if (!$mysql_connect) { //die('Could not connect: ' . mysql_error()); //error_log("db connect failed" ."\r\n", 3, "/nfsroot/html_onefigure/debug.info"); phplog("db connect failed"); exit; } mysql_select_db("pay_verify_db", $mysql_connect); $sql = "INSERT INTO op_anzhi_notify (PAY_AMOUNT, UID, NOTIFY_TIME, CP_INFO, ORDER_AMOUNT, ORDER_ACCOUNT, CODE, ORDER_TIME, MSG, ORDER_ID)\nVALUES\n('{$orderAmount}', '{$uid}', '{$notifyTime}', '{$cpInfo}', '{$orderAmount}', '{$orderAccount}', '{$code}', '{$orderTime}', '{$memo}', '{$orderId}')"; if (!mysql_query($sql, $mysql_connect)) { //die('Error: ' . mysql_error()); //error_log("db query failed" ."\r\n", 3, "/nfsroot/html_onefigure/debug.info"); phplog("db query failed 1"); exit; } // update op_order_info $cpInfo = intval($cpInfo); $sql = "UPDATE op_order_info SET VERIFY_STATE='SUCCESS', TRANSACTION_ID='{$uid}' WHERE ORDER_ID='{$cpInfo}'"; if (!mysql_query($sql)) { //die('Error: ' . mysql_error()); //error_log("db query failed" ."\r\n", 3, "/nfsroot/html_onefigure/debug.info"); phplog("db query failed 2"); exit; } mysql_close($mysql_connect); echo "success"; ?>
function parse_log($info_posfile, $pos, $info_log, $my_log) { return; global $log_tag; global $my_tag; global $rd_lines_each_time; global $msg_type_info; global $msg_type_err; global $conn; $fd = fopen($info_log, 'r'); if (!$fd) { $msg = "{$info_log} can not read"; echo date("Ymd H:i:s") . ': ' . $my_tag . ': ' . $msg . "\n"; phplog($my_log, $log_tag, $msg); return; } else { fseek($fd, $pos); } // connect to db by ODBC. // $conn = db_connect(); $rd_cnt = 0; while ($data = fgets($fd, 2048)) { $parse_ok = true; $data = chop(urldecode($data)); if (substr($data, 0, 1) !== "[" or substr($data, 9, 1) !== "]") { echo date("Ymd H:i:s") . ': ' . $my_tag . ": log fmt error: {$data}\n"; $rd_cnt++; continue; } $data = addslashes($data); parse_str($data, $log_arr); if ($log_arr['type'] == $msg_type_err) { send_sms('error: ', '15801564398'); } $timetmp1 = explode('[', $logarr[0]); $timetmp2 = explode(']', $timetmp1[1]); $logtimestr = date("Y-m-d") . " {$timetmp2['0']}"; $logsec = strtotime("2012-02-08 10:00:00"); $gatewaytmp = explode(' ', $logarr[0]); $gateway = $gatewaytmp[1]; //分析日志,日志各个字段分隔符为"," 短信内容中可能会有逗号 $count = count($logarr) . "\n"; $content = ""; if ($count == 9) { $content = $logarr[$count - 2]; $linkid = $logarr[$count - 1]; } else { $linkid = $logarr[$count - 1]; for ($j = 7; $j < $count - 1; $j++) { $content .= $logarr[$j]; } } if (substr($content, 0, 4) == "0500") { $len = strlen($content) - 12; $tmpcontent = pack("H{$len}", substr($content, 12)); $content = substr($content, 0, 12) . $tmpcontent; } //获取tablename echo "tablename {$tablename}\n"; $premobile = substr($logarr[4], 0, 7); $mobile_reg = $Hregion[$premobile]; $mobile_city = $Hcity[$premobile]; echo "{$Hregion}\n"; $sql = "insert into {$tablename} (msgtime,gateway,mobile,region,city,longnum,msgfeecode,msglength,msg,linkid) values ('{$timetmp2['0']}','{$gateway}','{$logarr['4']}','{$mobile_reg}','{$mobile_city}','{$logarr['2']}','{$logarr['3']}','{$logarr['6']}','{$content}','{$linkid}')"; echo $sql . "\n"; $result = mysql_query($sql); if (0 != mysql_errno()) { //mysql 1146错误,表示没这个表,建立之 if (mysql_errno() == 1146) { trans_w_log('/data0/apache/gateway/withdb/logdb3/insertDB_mo.log', "create table {$tablename}\n"); $sql = "CREATE TABLE `{$tablename}` (\n\t\t\t\t\t`id` int(9) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t`msgtime` time NOT NULL DEFAULT '00:00:00',\n\t\t\t\t\t`gateway` varchar(6) NOT NULL ,\n\t\t\t\t\t`mobile` varchar(32) NOT NULL,\n\t\t\t\t\t`region` varchar(6) NOT NULL,\n\t\t\t\t\t`city` varchar(6) NOT NULL,\n\t\t\t\t\t`longnum` varchar(32) NOT NULL,\n\t\t\t\t\t`msgfeecode` varchar(21) NOT NULL DEFAULT '',\n\t\t\t\t\t`msglength` varchar(4) DEFAULT NULL,\n\t\t\t\t\t`msg` text,\n\t\t\t\t\t`linkid` varchar(255) DEFAULT NULL,\n\t\t\t\t\tPRIMARY KEY (`id`),\n\t\t\t\t\tKEY `mobile` (`mobile`),\n\t\t\t\t\tKEY `linkid` (`linkid`),\n\t\t\t\t\tKEY `region` (`region`),\n\t\t\t\t\tKEY `city` (`city`),\n\t\t\t\t\tKEY `longnum` (`longnum`),\n\t\t\t\t\tKEY `gateway` (`gateway`)\n\t\t\t\t\t)"; mysql_query($sql); continue; } else { //数据库访问错误,直接退出本函数 $parse_ok = false; break; } } $rd_cnt++; if ($rd_cnt > $rd_lines_each_time) { break; } } //mysql_close($conn); if ($parse_ok) { $parse_to_line = ftell($fd); fclose($fd); $cmd = $echo . " '{$parse_to_line}' > {$info_posfile} 2>/dev/null"; exec($cmd); } else { // do nothing. return to main for re-try. } }