我有一个邮件列表,并以合法的方式向其发送信息。
这个邮件列表已经成长,现在它太大了,无法在商业时间发送它,因为打开太多连接并且服务器无法访问。
所以我制作了一个bash脚本,在晚上(凌晨4点)调用一个PHP文件,检查是否有任何新闻通讯计划发送,如果有的话,发送它。
BASH SCRIPT
#!/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 SCRIPT
$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);
}
}
测试没问题,我做的一切都很好。当我将它与真正的maillist一起使用时,PHP脚本会调用3次发送新闻稿的URL,以便我的客户收到3次简报。我的maillist是大约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"
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"
为什么标题位置会多次调用脚本?我怎么强迫只打一个电话?
有什么建议以不同的方式做到吗?。
任何帮助将不胜感激
答案 0 :(得分:0)
在寻找问题的原因和/或解决方案后,我找到了它。 默认情况下,如果提供超时,WGET会尝试20次打开URL。 我的脚本发送的电子邮件正在暂停,所以WGET一次又一次地尝试。
我将WGET命令改为
WGET -tries=1 -T 4 http://www.my.url/my/script.php
- tries = 1强制WGET只尝试一次打开脚本,即使超时也是如此 -T 4将时间设置为4秒
工作得很好。
感谢您的帮助。