Как определить Довольную Длину gzipped файла?

Вы не можете передать более одного оператора в sqlsrv_query () . В вашем случае у вас есть два варианта:

  • Создать один сложный оператор T-SQL. В этом случае количество заполнителей должно соответствовать количеству передаваемых параметров.
  • Выполнять каждую инструкцию отдельно

Комплексная инструкция:

 Вы не можете передать более одного оператора в  sqlsrv_query () . В вашем случае у вас есть два варианта: 

  • Создать один сложный оператор T-SQL. В этом случае количество заполнителей должно соответствовать количеству передаваемых параметров.
  • Выполнять каждую инструкцию отдельно

Комплексная инструкция:

[110]

Примечания:

Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).POST["addSomething"],

Вы не можете передать более одного оператора в sqlsrv_query () . В вашем случае у вас есть два варианта:

  • Создать один сложный оператор T-SQL. В этом случае количество заполнителей должно соответствовать количеству передаваемых параметров.
  • Выполнять каждую инструкцию отдельно

Комплексная инструкция:

[110]

Примечания:

Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).POST["addSomething"] ); $stmt = sqlsrv_query($conn, $sql, $params); if ($stmt === false ) { # Your code here } else { # Your code here } ... ?>

Примечания:

Драйвер PHP для SQL Server поддерживает несколько наборов результатов. Если вы используете один сложный оператор и один или несколько из ваших операторов являются SELECT, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).

13
задан St. John Johnson 3 May 2009 в 03:46
поделиться

3 ответа

Проблема здесь в том, что для того, чтобы узнать длину контента, вам нужно знать, поддерживает ли клиент кодировку gzip, и вы делегировали это решение с помощью ob_gzhandler. Из HTTP-заголовков :

 ob_start ();
ob_start ( 'ob_gzhandler');

 ... выводить содержимое страницы ...

ob_end_flush (); // ob_gzhandler one

заголовок ('Content-Length:' .ob_get_length ());

ob_end_flush (); // Основной

Полная версия:

$filename = "style.css";

if (!file_exists($filename) || !($info = stat($filename))) {
  header("HTTP/1.1 404 Not Found");
  die();
}

header("Date: ".gmdate("D, j M Y H:i:s e", time()));
header("Cache-Control: max-age=2592000");
header("Last-Modified: ".gmdate("D, j M Y H:i:s e", $info['mtime']));
header("ETag: ".sprintf("\"%x-%x-%x\"", $info['ino'], $info['size'], $info['mtime']));
header("Accept-Ranges: bytes");
header("Expires: ".gmdate("D, j M Y H:i:s e", $info['mtime']+2592000));
header("Content-Type: text/css"); // note: this was text/html for some reason?

ob_start();
ob_start("ob_gzhandler");
echo file_get_contents($filename);
ob_end_flush();
header('Content-Length: '.ob_get_length());
ob_end_flush();

Это намного лучше, чем самостоятельно решать проблему кодирования gzip.

19
ответ дан 1 December 2019 в 22:40
поделиться

Сначала необходимо выполнить весь gzip и измерить результат (либо сохранить содержимое в памяти, либо записать его на диск при сжатии, а затем записать файл gzip), а затем записать заголовок Content-Length, а затем отправьте содержимое файла.

Или используйте chunked Transfer Encoding .

1
ответ дан 1 December 2019 в 22:40
поделиться

Чтобы решить проблему с Firefox, я думаю, вам нужно включить заголовок («Content-Encoding: gzip»); , чтобы браузер знал, как распаковать контент.

Что касается длины контента, вы можете просто отключить это значение или попытаться найти способ использовать «Transfer-Encoding: chunked» (вы не можете просто отправить этот заголовок, вам нужно специально отформатировать данные для этого). Вполне возможно, что ob_end_flush автоматически разрешит чанкинг.

Я рекомендую вам получить wireshark и перехватить то, что отправляет ваш php-скрипт, и сравнить его с правильно работающим сервером, чтобы увидеть, какие заголовки и т. Д. Отсутствуют.

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

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