this document в разделе 14.14 говорится, что В HTTP, оно должно быть послано всякий раз, когда длина сообщения может быть определено до того, как передана, если это не запрещено правилами в разделе 4.4. Это означает, что его НЕ нужно отправлять, если вы не можете сказать его размер.
Просто не отправляйте его.
Если вы хотите отправить части данных браузеру, прежде чем все данные будут доступны, вы используете flush ваш выходной буфер? Может быть, это проблема, а не отсутствие заголовка?
способ использования флеш такова:
- генерировать некоторый вывод, который следует добавить его в буфер
- флеш() его, который должен отправить текущий буфер клиенту
- Гото 1
Таким образом, если ваш запрос возвращает много результатов, вы можете просто генерировать вывод для, скажем, 100 или 1000 из них, затем сброс и т. д.
Кроме того, чтобы сообщить браузеру клиента о попытке сохранить файл вместо его отображения в окне, вы можете попробовать использовать заголовок Content-disposition: attachment. См. Раздел specification здесь, раздел 19.5.1.
У меня есть заголовки, затем у меня есть флеш, затем у меня есть запрос sql. Тем не менее, он не открывает диалог сохранения после флеша. При работе с небольшим файлом он появляется только при загрузке файла. Запросы sql, которые я пытаюсь, занимают 45 секунд, и отслеживает время после отправки заголовков. – phazei
указано немного больше в anwser – kender
Мои заголовки: header ('Content-Type: "'. $ Mime. '"'); header ('Content-Disposition: attachment; filename = "'. $ Filename. '"'); header («Content-Transfer-Encoding: binary»); заголовок ('Истекает: 0'); header ('Pragma: no-cache'); – phazei