...

View Full Version : Using File handling, and time manipulation within lines



eon201
10-31-2007, 05:30 PM
Hi,

Ive come across something that i just dont know how to approach.
Basically I have two pages of php.

Page 1 creates a file with lines of data, each line of data looks like this:

Please call MrSmith immediately. On telephone number 02392666666. Thank you.1615 Now what I need to do with this data is take the last 4 digits of the strings (which are individual stamps of time etc 4:15pm) and work out:
1.How many lines appearred within the last hour.
2.If the last line is new (which would only be true if the time stamp on the line is equal to the current one of date('Gis').

Here is how far I have come so far. Any help would be greatly appreciatted.


<?php
$filename = 'phonecsv/'. date('ymd'). '.csv';

if (file_exists($filename))
{
$fp = fopen($filename, "r");

// works out how many callback requests today
$lines = count(file($filename));
echo "Today there have been $lines callback requests <br/>";

// needs to work out from time sequence how many in last hour
echo "In the last hour there have been x callback requests<br/>";

// needs to work out from time sequence if new message
echo "This is the latest callback request<br/>";

$data = fgets($fp);
}

else
{
echo "The file $filename does not exist!! Check the svr file and callback forwarder!<br/>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
echo $data;
?>

<script type="text/javascript">
// set the page to reload every 20 sec
setTimeout('window.location.href = '<?php echo $_SERVER['php_self']; ?>', 20);
</script>
</body>
</html>

Thanks. eon201.

Fumigator
10-31-2007, 09:16 PM
The mktime() function will convert your time to a unix timestamp. You'll want to add the current date to the string. Then get the current unix timestamp (once again mktime() can make that happen) and subtract 3600 from it (there are 3600 seconds in an hour). If your record's unix timestamp is >= the current unix timestamp, it happened in the last hour.

This is kind of a shoddy solution because it does not account for the midnight crossover when 2359 becomes 0000. It appears you create a new file for each day though so maybe that's not an issue for you. If it is... then I'd store a full unix timestamp in your file rather than a 4-digit time.

To get the most recent I would dump all the time strings into an array and sort the array desc.

eon201
11-01-2007, 09:56 AM
Hi,

Thanks for the response. The only problem is I am quite a noob. Any chance you can show me an example??

Thanks. Eon201

aedrin
11-01-2007, 04:11 PM
Example: Consider using a database.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum