每天使用PHP / Javascript将Apache日志文件上传到oracle数据库

时间:2018-07-24 11:12:14

标签: javascript php oracle apache

我每天都在生成Apache日志文件。现在,我需要每天将此文件数据插入到oracle数据库中。我编写了一个代码,用于手动将一个文件上传到数据库中。但是我需要一个脚本/代码,该脚本/代码将自动从该位置选择文件或仅按日期增加文件名,然后将数据插入数据库(我的文件名是按日期更改,每天都会更改。例如:access.2018.07.24.txt) 。有人可以帮忙吗。

<?php
$conn = oci_connect('usr1', 'dfdfdf1SS', 'sdsdfdg/XEBH');
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {
   print "Connected to Oracle!";
   }
$myfile = fopen("access.2018.07.24.txt", "r") or die("Unable to open file!");
while(!feof($myfile)) {
	$content= fgets($myfile);
	$carray=explode(',',$content);
	list($IP_ADDRESS, $USER_IDENTIFIER, $USERID , $REQUEST_TIME , $CLIENT_REQUEST ,$RESPONSE_CODE ,$SIZEOFOBJECT, $COOKIES)=$carray;
	

	$stdii = 'INSERT INTO LOGS(IP_ADDRESS, USER_IDENTIFIER, USERID , REQUEST_TIME , CLIENT_REQUEST ,RESPONSE_CODE ,SIZEOFOBJECT, COOKIES)'.
	'values(:IP_ADDRESS, :USER_IDENTIFIER, :USERID , :REQUEST_TIME , :CLIENT_REQUEST ,:RESPONSE_CODE ,:SIZEOFOBJECT, :COOKIES)';
	$compiled1 = oci_parse($conn, $stdii);
	oci_bind_by_name($compiled1, ':IP_ADDRESS', $IP_ADDRESS);
	oci_bind_by_name($compiled1, ':USER_IDENTIFIER', $USER_IDENTIFIER);
	oci_bind_by_name($compiled1,':USERID', $USERID);
	oci_bind_by_name($compiled1, ':REQUEST_TIME', $REQUEST_TIME);
	oci_bind_by_name($compiled1, ':CLIENT_REQUEST', $CLIENT_REQUEST);
	oci_bind_by_name($compiled1, ':RESPONSE_CODE', $RESPONSE_CODE);
	oci_bind_by_name($compiled1, ':SIZEOFOBJECT', $SIZEOFOBJECT);
	oci_bind_by_name($compiled1, ':COOKIES', $COOKIES);
	oci_execute($compiled1, OCI_COMMIT_ON_SUCCESS);
}
oci_close($conn);
fclose($myfile);
?>

1 个答案:

答案 0 :(得分:0)

在PHP中使用DateTime类,您可以这样做。在此示例中,我假设您要在文件名中添加昨天的日期

$d = new DateTime();
$yesterday = $d->sub(new DateInterval('P1D'))->format('Y.m.d');
$filename = "access.$yesterday.txt";

echo $filename;

结果(运行于2018年7月24日)

access.2018.07.23.txt

然后在像这样的fopen调用中使用$filename

$myfile = fopen($filename, "r") or die("Unable to open file!");