|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
vkle, Очень интересно оказалось про сокеты. Страницы открывать научился через SSL, но вот PDF скачивать не получается Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Вот скрипт, дает вот такой ответ авторGET /docs/pustoy-fayl-pdf-5-5d1eee323ff31-5d43c64a48619.pdf HTTP/1.1 Host: torta-torta.ru Connection: Close HTTP/1.1 400 Bad Request Date: Tue, 29 Dec 2020 13:59:32 GMT Server: Apache/2.4.29 (Ubuntu) Content-Length: 312 Connection: close Content-Type: text/html; charset=iso-8859-1 Bad Request Your browser sent a request that this server could not understand. Apache/2.4.29 (Ubuntu) Server at www.codestudio.site Port 443 Что не так? Почему файл "забрать" не могу? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 17:01 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
Стоило задать вопрос, сразу пришел ответ Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Все успешно выбрасывает в браузер. Теперь надо понять где начало и конец и как выделить именно PDF файл из ответа. Я думаю что действительно через сокеты будет надежнее качать чем курлом ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 18:29 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
БурыйТина Теперь надо понять где начало и конец и как выделить именно PDF файл из ответа. Стандартная структура: 1. Заголовки HTTP. 2. Пустая строка (означает окончание заголовков). 3. Тело ответа (контент). Начните с изучения заголовков ответа сервера. Там может быть отражено множество нюансов. А лучше, до того, с изучения основ протокола HTTP. Сложного там нет ничего, а лишним оно вряд ли будет. Похожие структуры найдете в других местах, например, в SIP. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2020, 22:22 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
vkle, Да уже разобрался, спасибо Код: php 1.
Вот так прекрасно разделяет и тело потом сохраняем в файл pdf сейчас научусь разбирать заголовок. Мне по сути из него нужен ответ 200 или иной, и размер контента, чтобы сравнить с сохраненным файлом. Вы очень мне помогли дав правильное направление. По крайней мере в сокетах четко работает таймаут и процент удачных загрузок выше, чем у курла. Теперь смогу замыкать это в бесконечные циклы и запрещать выход без скачивания файла. Останется только научиться еще сравнивать и сливать 2 JSON файла, чтобы в битрикс отдавать не всю "портянку" данных, а только новые данные и у меня одна часть будет сделана, можно будет в битриксе настроить бизнес процессы в зависимости от того, какие данные получены. Спасибо большое за поддержку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 05:27 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
Дописал загрузку через сокеты. Исходя из анализа логов, у источника API данных стоит какое-то ограничение, о котором мне не сказали, и после определенной частоты запросов сначала выдают 500, а если начинаю запрашивать далее то вообще перестают отвечать. Сейчас попробую поиграть с ожиданиями типа sleep и подобрать оптимальную частоту запросов посмотрю что будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 07:04 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
БурыйТина сравнивать и сливать 2 JSON файла БурыйТина сначала выдают 500, а если начинаю запрашивать далее то вообще перестают отвечать. Ладно. Выходит, что торррррмоз, всё же, на удаленной стороне. И это надо как-то учесть. Такая есть мысль. Таймауты сделать секунд пять. Может, семь... не более. Далее анализ всех ошибок. При тормозах или коде ответа не 200 сделать запись в лог и продолжить через минуту, полчаса, завтра... Если возможно, то продолжить со следующего за проблемным задания (гипотетически, удаленный сервер может на каких-то проблемных данных сваливаться в ошибку), чтобы исключить затык на каком-то одном проблемном. Тут есть, конечно, варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 09:59 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
Написал источнику API данных, они признали проблему на их стороне, поправили. Теперь ошибки присутствуют иногда, но не в таком объеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2020, 20:40 |
|
Скрипт умирает не отработав
|
|||
---|---|---|---|
#18+
vkle Отчасти странная функция. Есть же готовая https://www.php.net/manual/ru/function.tempnam для аналогичной цели. Впрочем, и в том и в другом случае дерево для кэша не создается . А значит, по мере наполнения файлами (единицы тысяч) "плоской" директории появятся тормоза. Чем больше файлов - тем заметнее. В ряде случаев кеш проще в базе хранить. Здесь как раз такой случай - им файла можно получить только лишь из базы, так почему бы сразу из базы не получить контент? Минус обращение к ФС получается. Впрочем, это вопрос другого толка, к данной теме отношения не имеет. Дошли руки до этого замечания. Не поделитесь ли примером, как дерево для кэша создавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:42 |
|
|
start [/forum/topic.php?fid=23&msg=40032514&tid=1459528]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 185ms |
0 / 0 |