数日間、PaypalIPNリスナースクリプトで問題が発生しています。Paypal IPNシステムに慣れていない方のために、基本的にPaypalは、トランザクションに関するメッセージをスクリプトに送信します。このメッセージには、いくつかのビットが追加されて返送されます。Paypalが正しい返信を受け取った場合は、「VERIFIED」と返信し、そうでない場合は「INVALID」と返信します。
私が経験した問題は、「fsockopen」コマンドにあると最初は思っていました。$ fp = fsockopen('ssl://sandbox.paypal.com'、443、$ errno、$ errstr、30); ただし、すべてのコードをこの行だけに減らしたので、問題なく接続されているようです。問題は、「feof」および「fgets」コマンドで発生します。スクリプトがハングアップするだけで、理由はわかりません。私は基本的にPaypalIPNListener Webサイトで提案されたコードをコピーしたので、それが機能すると思いました!feofまたはfgetsがなぜストールを引き起こしているのかを理解するのを手伝っていただければ幸いです。
完全なスクリプトは次のとおりです。
$postback = 'cmd=_notify-validate'; //doesn't matter what these include for now
$header='abc';
//Script has been activated, create debug
$filename = 'debug/debug1_script.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle,$postback);
fclose($filehandle);
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);//open the connection
//no connection, create debug file
if(!$fp){
$filename = 'debug/debug2_fpfail.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle, $errstr.'('.$errno.')');
fclose($filehandle);
die();
}
//post data back
fputs($fp, $header . $postback);
//create debug file
$filename = 'debug/debug3_postback.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle, $header.$postback);
fclose($filehandle);
//script hangs with either of the two following lines included
while(!feof($fp)){
$res=fgets($fp,1024);
}
よろしくお願いします!