flush not flushing?
| From: | Bryan Koschmann - GKT | Date: | Tue, 25 Mar 2003 21:48:04 +0000 |
| Subject: | flush not flushing? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-141016@lists.php.net to get a copy of this message | ||
Hello,
I'm including a script I use to automatically e-mail overdue customers. My
problem is I have to have it sleep to avoid upsetting the mailserver, but
when I do, it seems to pause and sleep the total time (number of users x
sleep(1)) then output the whole block. I'm testing it now by printing the
name and email to the screen.
Instead of:
Customer 1 - cust1@here.com
pause 1 sec
Customer 2 - cust2@here.com
pause 1 sec
Customer 3 - cust3@here.com
pause 1 sec
I get
big big big pause
Customer 1 - cust1@here.com
Customer 2 - cust2@here.com
Customer 3 - cust3@here.com
Here is the script. Any help would be great!
Thanks,
Bryan
<?php
$myname = "My Company";
$myemail = "here@domain.com";
$now = strtotime("now");
$nowdate = date("l, F jS Y", $now);
$nowtime = date("H:i", $now);
$nowmonth = date("F", $now);
$nowyear = date("Y", $now);
$duedate = strtotime("25 $nowmonth $nowyear");
$duedate = date("l, F jS Y", $duedate);
$t = mktime(0,0,0,date('m')+1,1,date('Y'));
$expdate = date("l, F jS Y", $t);
$expdatenum = date("w", $t);
if ($expdatenum == "6") {
$rendate = date("l, F jS Y", strtotime("$expdate +2 days"));
} else {
$rendate = date("l, F jS Y", strtotime("$expdate +1 day"));
}
$query = htmlspecialchars("execute goToExpire");
$fp = fsockopen ("111.222.333.444", 45678, $errno, $errstr, 30);
// return_format can be either "delimited" or "xml"
$connect = "
<request>
<connect>
Provider=SqlOleDb;
Data Source=(local);
Initial Catalog=MyCompany;
Integrated Security=SSPI;
</connect>
<options>
<return_format>delimited</return_format>
<delimiter>~</delimiter>
<text_qualifier></text_qualifier>
</options>
<query>
$query
</query>
</request>
";
$usercount = "0";
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "$connect");
flush();
// Create some headings for the table
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
$row = explode('~', $buffer);
if (!empty($row[0])) {
if ($row[0] == "ERROR") {
echo "<font face=arial size=5 color=#ff0000><b>$row[0]: $row[1]
$row[2]</b></font>\n";
} else {
if (username($row[4]) !== "") {
$isbiz = str_replace("\r\n", "", $row[6]);
$accountnum = account($row[0]);
$amountdue = amount($row[5]);
if ($isbiz == "True") {
$fullname = name($row[1]);
} elseif ($isbiz == "False") {
if (miname($row[3]) == "") {
$fullname = name($row[2]) . " " . name($row[1]);
} else {
$fullname = name($row[2]) . " " . miname($row[3]) . " " . name($row[1]);
}
}
flush();
$subject = "Account Status: #" . account($row[0]);
$message = "\r\n" .
"$fullname\r\n" .
"Account #" . account($row[0]) . "\r\n\r\n" .
"Payment Reminder!\r\n\r\n" .
"Our records indicate that we have not received your payment of \$$amountdue
due\r\n" .
"on $duedate for your Internet access account. Please\r\n" .
"send in your payment to prevent any interruption in your service. Any\r\n" .
"accounts with an open balance will expire on $expdate\r\n" .
"at 5:00pm, and cannot be reactivated until $rendate at 9:00am.\r\n\r\n" .
"If you have already sent in payment, please disregard this reminder. If\r\n" .
"you believe your account to be up-to-date or believe this message to be in\r\n" .
"error, feel free to call us at (555) 123-4567 or reply to this message to\r\n" .
"discuss your account.\r\n\r\n\r\n" .
"\tMy COmpany\r\n" .
"\tBilling Department\r\n\r\n" .
"[$nowdate - $nowtime]";
$custemail = username($row[4]) . "@domain.com";
$headers = "From: ".$myname." <".$myemail.">\r\n";
$headers .= "To: \"" . htmlspecialchars($fullname) . "\"
<$custemail>\r\n";
$headers .= "X-Mailer: Caesar-PHP";
echo "Sending mail to $fullname - $custemail\n";
// mail($custemail, $subject, $message, $headers);
// echo "$headers\n$subject\n$message\n";
$usercount++;
flush();
usleep(50000);
}
}
}
}
fclose ($fp);
echo "$usercount overdue customers\n";
}
function username($username) {
$name = str_replace(" ", "", $username);
$name = str_replace(",", "", $username);
$name = strtolower($username);
return $username;
}
function amount($amount) {
$amount = number_format($amount, 2);
return $amount;
}
function name($name) {
// $name = str_replace("\"", "", $name);
$name = str_replace(",", "", $name);
$name = ucwords(strtolower($name));
return $name;
}
function miname($name) {
$name = str_replace(" ", "", $name);
$name = str_replace(",", "", $name);
$name = ucwords(strtolower($name));
return $name;
}
function account($num) {
// $num = str_replace("\"", "", $num);
$num = str_replace("12:00:00 AM", "", $num);
$num = str_pad($num, 8, 0, STR_PAD_LEFT);
return $num;
}
?>