我正在尝试制作一个贝宝 IPN 系统,这是一个贝宝自动检查汇款的系统。他们提供了一个基本的系统脚本来做到这一点。
该系统很简单,您在脚本上获得 $_POST[],然后打开一个套接字与贝宝,它们会响应您在套接字中的有效或无效单词。
我的问题是打开套接字,我有 50% 的时间会丢失连接。当脚本连接时,我没有任何问题。所以我将其更改为 20 次尝试,而不是 1 次:
<?
//...
mail("mi@mail.com", "subject", "executing", "some headers"); //mailme when this is execute
$try = 20;
do{
$fp = @fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 15);
$try--;
}while($try>0 && !$fp);
if (!$fp) { // HTTP ERROR
mail("mi@mail.com", "subject", "error_message_not_connecting", "some headers");
} else {
mail("mi@mail.com", "subject", "connected_reading_socket", "some headers");
//fputs(..); and the loop reading working.
}
?>
在我的测试中,它现在可以 100% 的多次尝试。但在实际传输中,它不会在 20-30% 的时间内起作用。我收到了第一封邮件,但第二封邮件从未失败。
我在想.. 如果贝宝只打开到我的服务器的连接 1 秒,php 脚本可以在尝试后停止并停止继续吗?或者知道这里有什么问题吗?