我有一个邮件列表并定期向它发送信息。这个邮件列表已经长大了,现在它太大了,无法在商业时间发送它,因为打开了太多的连接并且服务器无法访问。所以我制作了一个 bash 脚本来在晚上(凌晨 4 点)调用一个 PHP 文件,检查是否有任何计划发送的时事通讯,如果有,发送它。
BASH 脚本
#!/bin/sh
senddate=$(date +"%Y-%m-%d")
url=https://www.my.url/check_to_send_maillist.php?date=$senddate\&autosend=1
wget -O /my/log/dest.log --http-user=myuser --http-password=mypass $url
PHP 脚本
$date=$_GET["date"];
if($date<>""){
$sql="select newsletters_id from " . TABLE_NEWSLETTERS . " where send_date='" . $fecha . "'";
$nid=executequery($sql);
if($nid<>""){
$url="https://www.my.url/send_newsletter.php?page=1&nID=%s&action=confirm_send&autosend=1";
$url=sprintf($url,$nid["newsletters_id"]);
header('location:' .$url);
}
}
测试没问题,我所做的一切都很好。当我将它与真正的邮件列表一起使用时,PHP 脚本向发送时事通讯的 URL 调用了 3 次,因此我的客户收到了 3 次时事通讯。我的邮件列表大约有 40,000 个地址(是的,我知道我应该使用外部服务)
Apache 日志
-BASH SCRIPT
server_ip - http_user [14/Dec/2012:04:00:02 +0100] "GET /check_to_send_maillist.php?date=2012-12-14&autosend=1 HTTP/1.0" 302 - "-" "Wget/1.10.2"
-PHP SCRIPT
server_IP - http_user [14/Dec/2012:04:04:59 +0100] "GET /my_send_script.php?page=1&nID=nid&action=confirm_send&autosend=1 HTTP/1.0" 200 21454 "-" "Wget/1.10.2"
server_IP - http_user [14/Dec/2012:04:20:01 +0100] "GET /my_send_script.php?page=1&nID=nid&action=confirm_send&autosend=1 HTTP/1.0" 200 21454 "-" "Wget/1.10.2"
server_IP - http_user [14/Dec/2012:06:05:38 +0100] "GET /my_send_script.php?page=1&nID=nid&action=confirm_send&autosend=1 HTTP/1.0" 200 268 "-" "Wget/1.10.2"
为什么标头位置多次调用脚本?如何强制只打一个电话?有什么建议以不同的方式来做吗?
任何帮助将不胜感激