PHP самый быстрый метод чтения ответа сервера

У меня есть некоторые настоящие проблемы с задержкой, произведенной при помощи fgets захватить ответ сервера на некоторую пакетную базу данных требования, я делаю.

Я отправляю через пакет, говорят, 10 000 вызовов, и я разыскал задержку к fgets порождение держания в скорости моего приложения, поскольку ответ для каждого вызова должен быть захвачен.

Я нашел этот поток http://bugs.php.net/bug.php?id=32806, который объясняет проблему вполне хорошо, но он читает файл, не ответ сервера так fread могло быть немного хитрым, поскольку я мог получить часть следующей строки и дополнительный материал, который я не хочу.

Таким образом, мой вопрос, что лучший/самый быстрый путь состоит в том, чтобы считать ответ из сервера как альтернатива fgets?

6
задан Benjamin 30 December 2013 в 17:53
поделиться

2 ответа

Здесь недостаточно информации.

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

Можете ли вы быстрее читать с помощью другого инструмента? Что ты пробовал? В какой операционной системе вы работаете? У вас есть доступ к оболочке для запуска netcat или подобного?

Также вы говорите о задержке, в то время как «ошибка», о которой вы говорите, в первую очередь относится к пропускной способности.

Не зная больше о проблеме, невозможно предложить решение.

С.

0
ответ дан 17 December 2019 в 22:11
поделиться

file_get_contents (или stream_get_contents, если у вас есть поток) должен быть самым быстрым способом чтения ответа сервера. Что ж, это самый быстрый способ получить данные, но часто это самый расточительный способ при рассмотрении использования памяти, поскольку он считывает весь файл сразу в память, в то время как fgets не нужно хранить более одной строки в памяти.

Вы также используете fread, который быстрее, чем fgets, и который читает файл фрагментами определенного размера, который вы можете определить.

Если вы полагаетесь на линейное чтение данных, вы можете использовать file (), который будет медленнее, чем file_get_contents, но даст вам массив со строками файла.

Чтобы дать вам лучший ответ, как уже упоминалось выше, нам нужна дополнительная информация.

1
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: