Есть скрипт сокет-сервера, который должен принимать данные. При этом установлен неявный сброс вывода с помощью ob_implicit_flush. Если удалить весь код после строки socket_accept включительно, то скрип выполняется и вывод отображается, но при запуске всего скрипта вывод игнорируется и он просто зависает на строке socket_accept. Попытки подключиться к нему так же безуспешны. Пример используется на PHP 5.4-5.6. Как я понял на более ранних версиях он работает корректно, но сам не проверял.
PHP:
скопировать код в буфер обмена
$address = '127.0.0.1'; $port = 8889; echo 'Создание сокета'; if (!$sock) { } else { echo 'ОК'; } if (!$bind) { } else { echo 'OК'; } echo 'Прослушивание сокета... '; if (!$listen) { } else { echo 'ОК'; } while (true) { echo 'Ожидание подключения... '; if ($client === false) { } else { echo 'ОК'.PHP_EOL; echo 'Соединение с клиентом "'.$client.'" установлено'; } }
|