2011-08-21 120 views
0

我最初发布这个在亚马逊SES论坛在这里:https://forums.aws.amazon.com/thread.jspa?threadID=74561&tstart=0循环HTTP后开始出现故障亚马逊SES

但由于计算器社会更加活跃,我会在这里:)张贴

基本上我有一个围绕cURL帖子的forecah循环(请参阅脚本代码片段的帖子底部)。它适用于几百个帖子,但对其他所有人来说都会失败。这里的最后一次成功后接着是第一次不成功的职位100的的...

* About to connect() to email.us-east-1.amazonaws.com port 443 (#0) 
* Trying 207.171.162.2... * connected 
* Connected to email.us-east-1.amazonaws.com (207.171.162.2) port 443 (#0) 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* SSL connection using RC4-MD5 
* Server certificate: 
* subject: /C=US/ST=Washington/L=Seattle/O=Amazon.com Inc./CN=email.us-east-1.amazonaws.com 
* start date: 2010-10-08 00:00:00 GMT 
* expire date: 2013-10-07 23:59:59 GMT 
* subjectAltName: email.us-east-1.amazonaws.com matched 
* issuer: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)09/CN=VeriSign Class 3 Secure Server CA - G2 
* SSL certificate verify ok. 

POST/HTTP/1.1 
Accept: */* 
Host: email.us-east-1.amazonaws.com 
Content-Type: application/x-www-form-urlencoded 
Date: Sat, 20 Aug 2011 18:59:56 UTC 
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=LKIABMH7PT8SO4YBRDQA,Algorithm=HmacSHA1,Signature=/0HFVEsTBGqUUSQGy9jvmsft2k4= 
Content-Length: 5810 
Expect: 100-continue 

< HTTP/1.1 200 OK 
< x-amzn-RequestId: 4a0f8f18-cb5f-11e0-8364-b14fdafc0888 
< Content-Type: text/xml 
< Content-Length: 326 
< Date: Sat, 20 Aug 2011 19:04:55 GMT 
< 
* Connection #0 to host email.us-east-1.amazonaws.com left intact 
* Closing connection #0 

的失败开始....

* About to connect() to email.us-east-1.amazonaws.com port 443 (#0) 
* Trying 207.171.162.2... * connected 
* Connected to email.us-east-1.amazonaws.com (207.171.162.2) port 443 (#0) 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* SSL connection using RC4-MD5 
* Server certificate: 
* subject: /C=US/ST=Washington/L=Seattle/O=Amazon.com Inc./CN=email.us-east-1.amazonaws.com 
* start date: 2010-10-08 00:00:00 GMT 
* expire date: 2013-10-07 23:59:59 GMT 
* subjectAltName: email.us-east-1.amazonaws.com matched 
* issuer: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)09/CN=VeriSign Class 3 Secure Server CA - G2 
* SSL certificate verify ok. 

POST/HTTP/1.1 
Accept: */* 
Host: email.us-east-1.amazonaws.com 
Content-Type: application/x-www-form-urlencoded 
Date: Sat, 20 Aug 2011 18:59:56 UTC 
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=LKIABMH7PT8SO4YBRDQA,Algorithm=HmacSHA1,Signature=/0HFVEsTBGqUUSQGy9jvmsft2k4= 
Content-Length: 5806 
Expect: 100-continue 

< HTTP/1.1 400 Bad Request 
< x-amzn-RequestId: 4b8f29db-cb5f-11e0-b9af-33e5c8fc863b 
< Content-Type: text/xml 
< Content-Length: 347 
< Date: Sat, 20 Aug 2011 19:04:58 GMT 
< 
* Connection #0 to host email.us-east-1.amazonaws.com left intact 
* Closing connection #0 

这里的脚本片段

foreach($JSONarray['DATABASE'] as $E) 
{ 
     if ((array_diff($E['LISTS'], $FILTER) != $E['LISTS']) && $E['STATUS'] == "CONF") 
     { 
     $MAIL = "Action=SendEmail&Source=".$FROME."&ReturnPath=".$BOUNCE."&Destination.ToAddresses.member.1=".$TOE."&Message.Subject.Data=".$SUBE."&Message.Body.Html.Data=".$BODYE;   
     //curl 
     $aws = curl_init(); 
     curl_setopt($aws, CURLOPT_POSTFIELDS, $MAIL); 
     curl_setopt($aws, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($aws, CURLOPT_HEADER, false); 
     curl_setopt($aws, CURLOPT_URL, $url); 
     curl_setopt($aws, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($aws, CURLOPT_VERBOSE, true); 
     curl_setopt($aws, CURLOPT_STDERR, $SESLOG); 
     curl_exec($aws); 
     curl_close($aws); 
     } 
} 

有任何想法吗?

回答

0

我想通了这个问题:

<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
<Error> 
<Type>Sender</Type> 
<Code>RequestExpired</Code> 
<Message>Request timestamp: Mon, 22 Aug 2011 15:49:11 UTC expired. It must be within 300 secs/ of server time.</Message> 
</Error> 
<RequestId>0e3899cb-ccd7-11e0-9f09-c5d12d442026</RequestId> 
</ErrorResponse> 

我的头都SET-在卷曲附近的forecah循环之外。卫生署!所以我只是将这些代码移入循环来解决超时问题。

0

它可能是一个DOS预防mecanism踢?如何在你的代码中加入一些睡眠?我肯定会放一些保护措施,制止潜在的DOS攻击,如果我是亚马逊..

只是一个猜测,但...

+0

我有能力通过我的亚马逊账户发送5篇/秒。我没有包含它,但是这个脚本在循环中有一个usleep命令来限制每秒1个帖子。 – johnwhitney