socket_read возвращает только 1-й символ

Я вижу, что подобный вопрос задавался несколько раз, но я не вижу никакого ответа для меня. Я пытаюсь прослушать порт на моем локальном хосте с помощью php с помощью команды socket_read и записать сообщение на сервер. Код работает нормально, но я могу читать и писать только 1-й символ. Скажи клиенту отправить «Привет», socket_read только читает «час».

$result = socket_read ($client, 1024);

echo "Reply From Server  :".$result ."\n";

Похоже, что PHP работает так быстро, что как только чтение сокета получает первый символ, программа продолжает запуск следующей строки. Мне нужно socket_read, чтобы дождаться окончания сообщения или появления в нем определенного символа, такого как пробел или точка, знак доллара или что-то еще.

До сих пор я пытался;

  1. Использовал сокет, прочитанный в цикле, поэтому каждый раз, когда символ получен, я могу поместить в массив и в конце концов сделать слово «Привет». Не работал. Когда я использую цикл, я получаю сотни нулевых символов в секундах.

  2. Чтение руководства PHP, которое я пытался использовать PHP_NORMAL_READ в заголовке. Когда эта опция используется, socket_read должен продолжаться, пока сообщение не \n или же \r но это не так, как это работает для моего приложения.

  3. Я вижу, что рекомендуется использовать node.js или websocket, но они не будут работать, а также это не платформа для чата. Все, что мне нужно, — это запуск php-скрипта на моем веб-сайте, и когда клиент отправляет информацию, я бы хотел, чтобы php-скрипт мог записывать это сообщение на сервере sql.

ЗаметкаЯ проверил удаленные и локальные соединения. Нет никакой разницы. Также нет проблем с записью сообщения на сервер. Единственная проблема заключается в получении одного символа с socket_read,

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]