私はペイパルIPNシステムを作ろうとしています。これは自動的に送金をチェックするペイパルのシステムです。それらはそれを行うための基本的なシステムスクリプトを提供します。
システムは簡単で、スクリプトで$ _POST []を取得し、ペイパルではなくソケットを開くと、ソケット内の有効または無効な単語に応答します。
私の問題は、ソケットを開くと、50%の確率で接続が失われることです。スクリプトが接続されたら、問題はありません。そこで、1回ではなく20回の試行に変更しました。
<?
//...
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%の確率で機能しません。最初のメールを受信していますが、2番目のメールが失敗することはありません。
私は考えています..ペイパルが私のサーバーへの接続を1秒だけ開く場合、phpスクリプトはいくつかの試行の後に停止し、続行を停止できますか?またはここで何が間違っているのか考えていますか?