中控考勤机软件可以将考勤机记录实时下载到本地数据库里, 很让人恼怒的是考勤机软件经常与设备断开连接,断开还不会自动重连, 可考前太差了,之前的几种方案也都无从谈起了。 苦思之后,想起直接用考勤机ip访问有web页面。所以有了上面的代码。跨过考勤机软件。
只要你的考勤机是中控系列并且能够使用考勤机IP打开web界面就可以使用下面方法,稳定、高效,强烈推荐!
使用方法:
1, 将代码总 192.168.1.202替换为你考勤机IP
2, 备份原文件后将下文覆盖: MYOA\webroot\task\sync_duty_machine.php
3,通达OA 系统管理 ->定时任务管理-> 同步考勤机数据 启用 。 ok!
<?
$start =microtime(true);
$con = mysql_connect(127.0.0.1:3336", "root", "myoa888");
if (!$con)
echo "无法连接Mysql";
mysql_select_db("td_oa");
mysql_query("set names GB2312");
//获取OA用户数据
$rs = mysql_query("select USER_ID,USER_NAME from user");
while ($row = mysql_fetch_array($rs))
$duty_user[] = $row;
$rs = mysql_query("select REGISTER_TIME from attend_duty order by REGISTER_TIME desc limit 1");
$row = mysql_fetch_array($rs);
$startDate = $row[0];
//获取考勤机上所有用户id和姓名
$webSource = file_get_contents("http://192.168.1.202/csl/query");
preg_match_all("/uid value=(\d{1,})>/", $webSource, $user);
foreach ($user[1] as $u)
$userStr.=$u . ",";
//获取考勤记录
****..................
//更新考勤记录
$cnt=0;
/*
......
<span style="font-size:18px;color:#330033;background-color: rgb(255, 0, 0);">
</span><span style="font-size:14px;color:#ff0000;"></span>
*/
$end = microtime(true);
$time= $end -$start;
if($cnt)
{
$open=@fopen("log.txt","a");
$add="更新了{$cnt} 条数据 ,耗时:". number_format($time, 2, '.',"")." 秒 ".date("Y-m-d H:i:s")."\r\n";
@fwrite($open,$add);
fclose($open);
}
?>