PHP标头位置不止一次打开url

时间:2012-12-14 09:44:39

标签: php bash wget

我有一个邮件列表,并以合法的方式向其发送信息。 这个邮件列表已经成长,现在它太大了,无法在商业时间发送它,因为打开太多连接并且服务器无法访问。 所以我制作了一个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" 为什么标题位置会多次调用脚本?我怎么强迫只打一个电话? 有什么建议以不同的方式做到吗?。

任何帮助将不胜感激

1 个答案:

答案 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秒

工作得很好。

感谢您的帮助。