Я вижу, что подобный вопрос задавался несколько раз, но я не вижу никакого ответа для меня. Я пытаюсь прослушать порт на моем локальном хосте с помощью php с помощью команды socket_read и записать сообщение на сервер. Код работает нормально, но я могу читать и писать только 1-й символ. Скажи клиенту отправить «Привет», socket_read
только читает «час».
$result = socket_read ($client, 1024);
echo "Reply From Server :".$result ."\n";
Похоже, что PHP работает так быстро, что как только чтение сокета получает первый символ, программа продолжает запуск следующей строки. Мне нужно socket_read, чтобы дождаться окончания сообщения или появления в нем определенного символа, такого как пробел или точка, знак доллара или что-то еще.
До сих пор я пытался;
Использовал сокет, прочитанный в цикле, поэтому каждый раз, когда символ получен, я могу поместить в массив и в конце концов сделать слово «Привет». Не работал. Когда я использую цикл, я получаю сотни нулевых символов в секундах.
Чтение руководства PHP, которое я пытался использовать PHP_NORMAL_READ
в заголовке. Когда эта опция используется, socket_read должен продолжаться, пока сообщение не \n
или же \r
но это не так, как это работает для моего приложения.
Я вижу, что рекомендуется использовать node.js или websocket, но они не будут работать, а также это не платформа для чата. Все, что мне нужно, — это запуск php-скрипта на моем веб-сайте, и когда клиент отправляет информацию, я бы хотел, чтобы php-скрипт мог записывать это сообщение на сервере sql.
ЗаметкаЯ проверил удаленные и локальные соединения. Нет никакой разницы. Также нет проблем с записью сообщения на сервер. Единственная проблема заключается в получении одного символа с socket_read
,
Задача ещё не решена.
Других решений пока нет …