0

データを応答としてクライアントに送信するサービスを作成しています。

テキスト (PLAIN ASCII) データを送信していますが、最初にデータを圧縮し (標準の圧縮ルーチンのいずれかを使用)、次に、header() 関数などを使用して圧縮データをサーバーに送り返したいと考えています。

私はPHPに比較的慣れていないので、データを収集したので、HTTP応答で(圧縮された)データをユーザーに送信する方法を知る必要があることを知っています

これは私がこれまでに持っているものの疑似コードです:

<?php
   function createResponse($args)
   {
      if ( ($data = fetch_data($args)) !== NULL)
      {
         /* Assumption is that $data is a string consisting of comma separated
            values (for the columns) and each "row" is separated by a CRLF
            so $data looks like this:

            18-Oct-2009, 100.2, -10.5, 15.66, 34.2, 99.2, 88.2, 'c', 'it1', 1000342\r\n
            19-Oct-2009, -33.72, 47.5, 24.76, 8.2, 89.2, 88.2, 'c', 'it2', 304342\r\n

            etc ..
         */


         //1. OPTIONAL - need to encrypt $data here (how?)
         //2. Need to compress (encrypted?) $data here (how?)
         //3. Need to send HTTP Status 200 OK and mime/type (zip/compressed here)
         //4. Need to send data

      }
      else
      {
         //5. Need to send HTTP error code (say 404) here
      }
   }
?>

上記の 1 ~ 5 に使用するステートメントを教えてくれる経験豊富な PHP コーダーはいますか?

4

1 に答える 1

0

ob_gzhandlerで圧縮するか (ブラウザーが自動的に解凍します)、またはZipArchiveでデータをアーカイブして、実際の .zip ファイルのようにユーザーに転送することができます。次のようなものが必要です。

// Headers for an download:
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="yourarchive.zip"');
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('yourarchive.zip');

出力の前にヘッダーを送信する必要があることに注意してください。

于 2009-11-06T15:59:39.373 に答える