コード例 #1
0
 private function createPartStream(MWP_Http_MultipartResponsePart $part)
 {
     $stream = new MWP_Stream_Append();
     foreach ($part->getHeaders() as $header => $value) {
         if (strcasecmp("content-location", $header) === 0) {
             // Content-Location can contain special characters (like \r\n for example)
             $value = urlencode($value);
         }
         $stream->addStream(MWP_Stream_Stream::factory(sprintf("%s: %s\r\n", strtolower($header), $value)));
     }
     $body = $part->getBody();
     // Manually output content-transfer-encoding header
     $stream->addStream(MWP_Stream_Stream::factory(sprintf("content-transfer-encoding: %s\r\n", $part->getEncoding())));
     switch ($part->getEncoding()) {
         case 'binary':
             // No action required
             break;
         case 'base64':
             $body = new MWP_Stream_Base64EncodedStream($body);
             break;
         default:
             throw new MWP_Worker_Exception(MWP_Worker_Exception::GENERAL_ERROR, 'Encoding %s not supported.');
     }
     $stream->addStream(MWP_Stream_Stream::factory("\r\n"));
     $stream->addStream($body);
     return $stream;
 }
コード例 #2
0
 public function createExportTableStream($length, $tableName)
 {
     $stream = new MWP_Stream_Append();
     $columns = $this->getConnection()->query("SHOW COLUMNS IN `{$tableName}`;")->fetchAll();
     if (is_array($columns)) {
         $columns = $this->repack($columns, 'Field');
     }
     $query = $this->selectAllDataQuery($tableName, $columns);
     $statement = $this->getConnection()->query($query, true);
     // Go through row by row
     if (!$this->options->isSkipLockTables()) {
         $stream->addStream(MWP_Stream_Stream::factory("LOCK TABLES `{$tableName}` WRITE;\n"));
     }
     $stream->addStream(MWP_Stream_Stream::factory("/*!40000 ALTER TABLE `{$tableName}` DISABLE KEYS */;\n"));
     $stream->addStream(new MWP_Stream_Callable(array($this, 'createExportRowStream'), array($statement, $tableName, $columns)));
     $stream->addStream(MWP_Stream_Stream::factory("\n"));
     $stream->addStream(MWP_Stream_Stream::factory("/*!40000 ALTER TABLE `{$tableName}` ENABLE KEYS */;\n"));
     if (!$this->options->isSkipLockTables()) {
         $stream->addStream(MWP_Stream_Stream::factory("UNLOCK TABLES;\n"));
     }
     return $stream;
 }