powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Зависает один из запросов file_get_contents
10 сообщений из 10, страница 1 из 1
Зависает один из запросов file_get_contents
    #39384693
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые форумчане!
Столкнулся с проблемой, в скрипте несколько запросов через file_get_contents. На одном запросе скрипт зависает, хотя ответ в сниффере я вижу мгновенно. Пробовал перенести ответ один-в-один в свой скрипт - отрабатывает нормально в этом случае. Может быть проблема с ssl?
В хедерах ответа сервера есть такие строки

авторContent-Security-Policy: default-src data: 'self' 'unsafe-inline' 'unsafe-eval' ...
Content-Security-Policy-Report-Only: default-src data: blob: about: 'self' 'unsafe-inline' 'unsafe-eval' https: wss:; report-uri /csp/report?always;
Cache-Control: no-cache
Cache-Control: no-store
Pragma: no-cache
Content-Type: text/event-stream;charset=UTF-8
Transfer-Encoding: chunked

Может что-то из этого влияет на разбор ответа запроса.
В среднем зависание скрипта на 50-60 секунд, потом контент запроса отдается в переменную как и должно быть.
Пробовал на курл, то же самое. Перенес скрипт с локалки на сервак, без результата
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384694
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений1000,
зависает именно на file_get_contents
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384712
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил, сделав на сокетах.
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384714
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1000ответ в сниффере я вижу мгновенноЕвгений1000зависает именно на file_get_contents
Если всё действительно так, то могу только предположить, что удалённый сервер никак не обозначает ни окончание передачи контента, ни его длину. По крайней мере, в приведённых заголовках длина не указана. В таком случае клиенту только на собственный таймаут можно рассчитывать.
У curl есть опции для настройки таймаутов. Не пробовали выставить небольшие значения?
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384720
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Transfer-Encoding: chunked как бы предполагает, что длина не указана. в context на file_get_contents можно тоже таймаут выставить, но он не помогает и в курле тоже. Предполагаю, что он не срабатывает по причине того, что таймаут на период передачи данных не срабатывает, проблема в расшифровке данных. Читал, что до версии пхп<5.3.0 chunked вообще не расшифровывался через file_get_contents.
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384722
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

да, видимо эта проблема решаема только через сокеты. И то я сделал

Код: php
1.
$html = fread($fp, 1000000);



мне больше и не нужно, но думаю если зациклить и пытаться дочитать до конца файла, то будет приблизительно тоже самое, если вообще не уйдет в вечный цикл
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384762
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, все просто!
В хедер нужно было добавить
Connection: close
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39384865
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1000В хедер нужно было добавить
Connection: closeНу да, это вариант окончания передачи данных. А что, удалённый сервер подконтролен, чтобы его настраивать? Ну а в общем, на сокетах гораздо больше гибкости в таких ситуациях. Хотя, на мой взгляд, ситуация, скорее, частная.
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39385182
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это HTTP, что почему бы CURL не взять?
...
Рейтинг: 0 / 0
Зависает один из запросов file_get_contents
    #39410433
Евгений1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett, а в чем разница? Курл кстати, тоже самое
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Зависает один из запросов file_get_contents
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]