У меня были проблемы с моим скриптом прослушивания Paypal IPN в течение нескольких дней. Для тех из вас, кто не знаком с системой Paypal IPN, в основном Paypal отправляет ваш скрипт с сообщением о транзакции, которое вы отправляете обратно с добавлением пары битов. Если Paypal получит правильный ответ, он ответит «ПРОВЕРЕНО», а если нет, то скажет «НЕДЕЙСТВИТЕЛЬНО».
Сначала я подумал, что проблема, с которой я столкнулся, связана с командой «fsockopen»: $fp=fsockopen('ssl://sandbox.paypal.com', 443, $errno, $errstr, 30); Однако, сократив весь мой код почти до этой строки, кажется, что все нормально. Проблема возникает с командами feof и fgets. Скрипт просто зависает, и я не знаю почему. По сути, я скопировал код, предложенный на веб-сайте Paypal IPN Listener, поэтому я предполагал, что он будет работать! Если бы вы могли помочь мне понять, почему 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);
}
Спасибо заранее!