1) Срок активности лицензии истёк и как следствие, антиспам-фильтр от IP.Board не работает (не должен работать)
2) В настройках IP.Board включаем антиспам-фильтр (почему-то IP.Board разрешает это сделать при истёкшей лицензии)
Что получаем:
При попытке регистрации нового пользователя на странице регистрации (шаг 1) нажимаем кнопку "Регистрация" и... ждём 3 мин, после чего получаем от сервера ошибку "Internal Server Error"
Первое, что пришло в голову - бесконечный цикл где-то в глубинах исходных кодов IP.Board
//-----------------------------------------
// Pass twitter/facebook via spam service
//-----------------------------------------
...
/* Query the service */
$spamCode = IPSMember::querySpamService( $member['email'] );
//-------------------------------
// Is URL, try curl and then fall back
//-------------------------------
...
$contents = $this->_getContentsWithSocket( $file_location );
Что имеем:
1) Срок активности лицензии истёк и как следствие, антиспам-фильтр от IP.Board не работает (не должен работать)
2) В настройках IP.Board включаем антиспам-фильтр (почему-то IP.Board разрешает это сделать при истёкшей лицензии)
Что получаем:
При попытке регистрации нового пользователя на странице регистрации (шаг 1) нажимаем кнопку "Регистрация" и... ждём 3 мин, после чего получаем от сервера ошибку "Internal Server Error"
Первое, что пришло в голову - бесконечный цикл где-то в глубинах исходных кодов IP.Board
Локализация причины
1) /admin/sources/base/ipsController.php => ipsController::init():
protected function init() { $this->registry = ipsRegistry::instance(); $this->registry->init(); }2) /admin/sources/base/ipsController.php => ipsController::handleRequest():
3) /admin/applications/core/modules_public/global/register.php => public_core_global_register::_completeRegistrationSave():
4) /admin/sources/base/ipsMember.php => IPSMember::querySpamService():
/* Query the service */ $response = $query->postFileContents( "https://remoteservices.invisionpower.com/spam/{$type}", array( 'email' => $email, 'ip' => $ip ), $key, $key );5) /kernel/classFileManagement.php => classFileManagement::postFileContents():
6) /kernel/classFileManagement.php => classFileManagement::_getContentsWithSocket():
while( ! feof($fp) && ! $status['timed_out'] ) { $data .= fgets( $fp, 8192 ); $status = stream_get_meta_data($fp); }Вот здесь команда fgets "зависает". При этом поток $fp проинициализирован:
print_r($fp) = "Resource id #35"
По каким-то причинам IP.Board'овский сервер не отдаёт ни EOF, ни EOL ?