/** * Gzip content * * @param string $filePath * @param string $content * @return void */ protected function gzipContent($filePath, $content) { $functionName = function_exists('gzopen') ? 'gzopen' : 'gzopen64'; $gzip = $functionName($filePath . $this->gzFileExtension, $this->gzCompressionLevel); gzputs($gzip, $content); gzclose($gzip); }
function geoip_detect_update() { $download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz'; $outFile = geoip_detect_get_database_upload_filename(); // Download $tmpFile = download_url($download_url); if (is_wp_error($tmpFile)) { return $tmpFile->get_error_message(); } // Ungzip File $zh = gzopen($tmpFile, 'r'); $h = fopen($outFile, 'w'); if (!$zh) { return __('Downloaded file could not be opened for reading.', 'geoip-detect'); } if (!$h) { return sprintf(__('Database could not be written (%s).', 'geoip-detect'), $outFile); } while (($string = gzread($zh, 4096)) != false) { fwrite($h, $string, strlen($string)); } gzclose($zh); fclose($h); //unlink($tmpFile); return true; }
private function setFile() { $recognize = ''; $recognize = implode('_', $this->dbName); $fileName = $this->trimPath($this->config['path'] . self::DIR_SEP . time() . '.sql'); $path = $this->setPath($fileName); if ($path !== true) { $this->error("无法创建备份目录目录 '{$path}'"); } if ($this->config['isCompress'] == 0) { if (!file_put_contents($fileName, $this->content, LOCK_EX)) { $this->error('写入文件失败,请检查磁盘空间或者权限!'); } } else { if (function_exists('gzwrite')) { $fileName .= '.gz'; if ($gz = gzopen($fileName, 'wb')) { gzwrite($gz, $this->content); gzclose($gz); } else { $this->error('写入文件失败,请检查磁盘空间或者权限!'); } } else { $this->error('没有开启gzip扩展!'); } } if ($this->config['isDownload']) { $this->downloadFile($fileName); } }
function WRITE($hash, $overwrite = 0) { $id = $hash["id"]; $version = $hash["version"]; $dbfile = $this->FN("{$id}.{$version}"); if (!$overwrite && file_exists($dbfile)) { return; } #-- read-lock if (file_exists($dbfile)) { $lock = fopen($dbfile, "rb"); flock($lock, LOCK_EX); } #-- open file for writing, secondary lock if ($f = gzopen($dbfile, "wb" . $this->gz)) { if (!lock) { flock($f, LOCK_EX); } $r = gzwrite($f, serialize($hash)); gzclose($f); $this->SETVER($id, $version); $this->CACHE_ADD($id, $version); return 1; } #-- dispose lock if ($lock) { flock($lock, LOCK_UN); fclose($lock); } return 0; }
/** * Finish: close file */ public function finish() { if ($this->isOpen()) { gzclose($this->Resource); $this->Resource = null; } }
public function testCreate() { $sitemap = new Sitemap(['maxUrlsCountInFile' => 1]); $sitemapDirectory = $sitemap->sitemapDirectory = $this->path; $sitemap->addModel(Category::className()); $sitemap->setDisallowUrls(['#category_2#']); $sitemap->create(); $sitemapFileNames = array(); foreach (glob("{$sitemapDirectory}/sitemap*") as $sitemapFilePath) { $sitemapFileNames[] = basename($sitemapFilePath); } $this->assertEquals($sitemapFileNames, array('sitemap.xml', 'sitemap.xml.gz', 'sitemap1.xml', 'sitemap1.xml.gz', 'sitemap2.xml', 'sitemap2.xml.gz')); $xmlData = file_get_contents("{$sitemapDirectory}/sitemap.xml"); $this->assertNotFalse(strpos($xmlData, '<?xml version="1.0" encoding="UTF-8"?>')); $xmlData = file_get_contents("{$sitemapDirectory}/sitemap2.xml"); $this->assertNotFalse(strpos($xmlData, '<loc>http://localhost/category_3</loc>')); $gzSitemap = gzopen("{$sitemapDirectory}/sitemap.xml.gz", "r"); $sitemap = fopen("{$sitemapDirectory}/sitemap.xml", "r"); $this->assertEquals(fread($gzSitemap, 2000), fread($sitemap, 2000)); gzclose($gzSitemap); fclose($sitemap); $gzSitemap = gzopen("{$sitemapDirectory}/sitemap2.xml.gz", "r"); $sitemap = fopen("{$sitemapDirectory}/sitemap2.xml", "r"); $this->assertEquals(fread($gzSitemap, 2000), fread($sitemap, 2000)); gzclose($gzSitemap); fclose($sitemap); }
/** * Rotate all files in var/log which ends with .log */ public function rotateLogs() { $var = Mage::getBaseDir('log'); $logDir = new Varien_Io_File(); $logDir->cd($var); $logFiles = $logDir->ls(Varien_Io_File::GREP_FILES); foreach ($logFiles as $logFile) { if ($logFile['filetype'] == 'log') { $filename = $logFile['text']; if (extension_loaded('zlib')) { $zipname = $var . DS . $this->getArchiveName($filename); $zip = gzopen($zipname, 'wb9'); gzwrite($zip, $logDir->read($filename)); gzclose($zip); } else { $logDir->cp($filename, $this->getArchiveName($filename)); } foreach ($this->getFilesOlderThan(self::MAX_FILE_DAYS, $var, $filename) as $oldFile) { $logDir->rm($oldFile['text']); } $logDir->rm($filename); } } $logDir->close(); }
function geoip_detect_update() { // TODO: Currently cron is scheduled but not executed. Remove scheduling. if (get_option('geoip-detect-source') != 'auto') { return; } $download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz'; $download_url = apply_filters('geoip_detect2_download_url', $download_url); $outFile = geoip_detect_get_database_upload_filename(); // Download $tmpFile = download_url($download_url); if (is_wp_error($tmpFile)) { return $tmpFile->get_error_message(); } // Ungzip File $zh = gzopen($tmpFile, 'r'); $h = fopen($outFile, 'w'); if (!$zh) { return __('Downloaded file could not be opened for reading.', 'geoip-detect'); } if (!$h) { return sprintf(__('Database could not be written (%s).', 'geoip-detect'), $outFile); } while (($string = gzread($zh, 4096)) != false) { fwrite($h, $string, strlen($string)); } gzclose($zh); fclose($h); unlink($tmpFile); return true; }
protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->getEntityManager($input->getOption('em')); $c = $this->getContainer(); if (!$c->hasParameter('kb_sitemap.base_url')) { throw new \RuntimeException("Sitemap requires base_url parameter [kb_sitemap.base_url] to be available, through config or parameters"); } $output->write('<info>Fetching resources..</info>' . PHP_EOL); $dql = <<<___SQL SELECT b.name, b.ownerName, b.updatedAt FROM KnpBundlesBundle:Bundle b ___SQL; $q = $em->createQuery($dql); $bundles = $q->getArrayResult(); $dql = <<<___SQL SELECT d.name, d.createdAt FROM KnpBundlesBundle:Developer d ___SQL; $q = $em->createQuery($dql); $users = $q->getArrayResult(); $sitemapFile = $c->getParameter('kernel.root_dir') . '/../web/sitemap.xml'; $output->write('<info>Building sitemap...</info>' . PHP_EOL); $spaceless = (bool) $input->getOption('spaceless'); $tpl = $spaceless ? 'KnpSitemapBundle::sitemap.spaceless.xml.twig' : 'KnpSitemapBundle::sitemap.xml.twig'; $sitemap = $c->get('templating')->render($tpl, compact('bundles', 'users')); $output->write("<info>Saving sitemap in [{$sitemapFile}]..</info>" . PHP_EOL); file_put_contents($sitemapFile, $sitemap); // gzip the sitemap if (function_exists('gzopen')) { $output->write("<info>Gzipping the generated sitemap [{$sitemapFile}.gz]..</info>" . PHP_EOL); $gz = gzopen($sitemapFile . '.gz', 'w9'); gzwrite($gz, $sitemap); gzclose($gz); } $output->write('<info>Done</info>' . PHP_EOL); }
public function animetitlesUpdate() { $db = new DB(); $lastUpdate = $db->queryOneRow("SELECT unixtime AS utime FROM animetitles LIMIT 1"); if (isset($lastUpdate['utime']) && time() - $lastUpdate['utime'] < 604800) { return; } if ($this->echooutput) { echo "Updating animetitles."; } $zh = gzopen('http://anidb.net/api/animetitles.dat.gz', 'r'); preg_match_all('/(\\d+)\\|\\d\\|.+\\|(.+)/', gzread($zh, '10000000'), $animetitles); if (!$animetitles) { return false; } if ($this->echooutput) { echo "."; } $db->query("DELETE FROM animetitles WHERE anidbID IS NOT NULL"); for ($i = 0; $i < count($animetitles[1]); $i++) { $db->queryInsert(sprintf("INSERT INTO animetitles (anidbID, title, unixtime) VALUES (%d, %s, %d)", $animetitles[1][$i], $db->escapeString(html_entity_decode($animetitles[2][$i], ENT_QUOTES, 'UTF-8')), time())); } $db = NULL; gzclose($zh); if ($this->echooutput) { echo " done.\n"; } }
public static function export_tracking() { global $wpdb; // only one export at a time if (get_option('podlove_tracking_export_all') !== false) { return; } update_option('podlove_tracking_export_all', $wpdb->get_var("SELECT COUNT(*) FROM " . \Podlove\Model\DownloadIntent::table_name())); update_option('podlove_tracking_export_progress', 0); $rowsPerQuery = 1000; $lastId = 0; $page = 0; $fp = gzopen(self::get_tracking_export_file_path(), 'w'); do { // Keeping track of the $lastId is (roughly) a bajillion times faster than paging via LIMIT. $sql = "\n\t\t\t\tSELECT\n\t\t\t\t\tid,\n\t\t\t\t\tuser_agent_id,\n\t\t\t\t\tmedia_file_id,\n\t\t\t\t\trequest_id,\n\t\t\t\t\taccessed_at,\n\t\t\t\t\tsource,\n\t\t\t\t\tcontext,\n\t\t\t\t\tgeo_area_id,\n\t\t\t\t\tlat,\n\t\t\t\t\tlng\n\t\t\t\tFROM\n\t\t\t\t\t" . \Podlove\Model\DownloadIntent::table_name() . "\n\t\t\t\t\tWHERE id > " . (int) $lastId . "\n\t\t\t\tLIMIT 0, {$rowsPerQuery}"; $rows = $wpdb->get_results($sql, ARRAY_A); foreach ($rows as $row) { gzwrite($fp, implode(",", $row) . "\n"); } $lastId = $row['id']; $page++; update_option('podlove_tracking_export_progress', $page * $rowsPerQuery); } while (count($rows) > 0); gzclose($fp); delete_option('podlove_tracking_export_all'); delete_option('podlove_tracking_export_progress'); exit; }
public function import() { // It might not look like it, but it is actually compatible to // uncompressed files. $gzFileHandler = gzopen($this->file, 'r'); Model\DownloadIntent::delete_all(); Model\DownloadIntentClean::delete_all(); $batchSize = 1000; $batch = array(); while (!gzeof($gzFileHandler)) { $line = gzgets($gzFileHandler); list($id, $user_agent_id, $media_file_id, $request_id, $accessed_at, $source, $context, $geo_area_id, $lat, $lng) = explode(",", $line); $batch[] = array($user_agent_id, $media_file_id, $request_id, $accessed_at, $source, $context, $geo_area_id, $lat, $lng); if (count($batch) >= $batchSize) { self::save_batch_to_db($batch); $batch = []; } } gzclose($gzFileHandler); // save last batch to db self::save_batch_to_db($batch); \Podlove\Analytics\DownloadIntentCleanup::cleanup_download_intents(); \Podlove\Cache\TemplateCache::get_instance()->setup_purge(); wp_redirect(admin_url('admin.php?page=podlove_imexport_migration_handle&status=success')); exit; }
protected function __parseLog($file) { $items = array(); $last = null; if (is_readable($file)) { header('content-type: text/plain'); if (preg_match('/.gz$/', $file)) { $handle = gzopen($file, "r"); $data = gzread($handle, Symphony::Configuration()->get('maxsize', 'log')); gzclose($handle); } else { $data = file_get_contents($file); } $lines = explode(PHP_EOL, $data); // Skip log info: while (count($lines)) { $line = trim(array_shift($lines)); if ($line == '--------------------------------------------') { break; } } // Create items: foreach ($lines as $line) { preg_match('/^(.*?) > (.*)/', trim($line), $matches); // New entry: if (count($matches) == 3) { $message = htmlentities($matches[2]); $items[] = (object) array('timestamp' => DateTimeObj::get(__SYM_DATETIME_FORMAT__, strtotime($matches[1])), 'message' => $message); } } // Reverse order: $items = array_reverse($items); } return $items; }
/** * Compress file on disk * * @param string $source * @param int $level * @return string|false */ function gzcompressfile($source, $level = false) { if (file_exists($source)) { $dest = $source . '.gz'; $mode = 'wb' . $level; $error = false; if ($fp_out = gzopen($dest, $mode)) { if ($fp_in = fopen($source, 'rb')) { while (!feof($fp_in)) { gzwrite($fp_out, fread($fp_in, 4096)); } fclose($fp_in); } else { $error = true; } gzclose($fp_out); } else { $error = true; } if ($error) { return false; } return $dest; } return false; }
public static function update_database() { set_time_limit(0); $outFile = self::get_upload_file_path(); // for download_url() require_once ABSPATH . 'wp-admin/includes/file.php'; $tmpFile = \download_url(self::SOURCE_URL); if (is_wp_error($tmpFile)) { die($tmpFile->get_error_message()); } $zh = gzopen($tmpFile, 'rb'); $h = fopen($outFile, 'wb'); if (!$zh) { die('Downloaded file could not be opened for reading.'); } if (!$h) { die(sprintf('Database could not be written (%s).', $outFile)); } while (!gzeof($zh)) { fwrite($h, gzread($zh, 4096)); } gzclose($zh); fclose($h); unlink($tmpFile); if (!self::is_db_valid()) { die(sprintf('Checksum does not match (%s).', $outFile)); } }
function backwpup_read_logheader($logfile) { $headers = array("backwpup_version" => "version", "backwpup_logtime" => "logtime", "backwpup_errors" => "errors", "backwpup_warnings" => "warnings", "backwpup_jobid" => "jobid", "backwpup_jobname" => "name", "backwpup_jobtype" => "type", "backwpup_jobruntime" => "runtime", "backwpup_backupfilesize" => "backupfilesize"); if (!is_readable($logfile)) { return false; } //Read file if (substr($logfile, -3) == ".gz") { $fp = gzopen($logfile, 'r'); $file_data = gzread($fp, 1536); // Pull only the first 1,5kiB of the file in. gzclose($fp); } else { $fp = fopen($logfile, 'r'); $file_data = fread($fp, 1536); // Pull only the first 1,5kiB of the file in. fclose($fp); } //get data form file foreach ($headers as $keyword => $field) { preg_match('/(<meta name="' . $keyword . '" content="(.*)" \\/>)/i', $file_data, $content); if (!empty($content)) { $joddata[$field] = $content[2]; } else { $joddata[$field] = ''; } } if (empty($joddata['logtime'])) { $joddata['logtime'] = filectime($logfile); } return $joddata; }
public function animetitlesUpdate() { $pdo = $this->pdo; $lastUpdate = $pdo->queryOneRow('SELECT max(unixtime) as utime FROM animetitles'); if (isset($lastUpdate['utime']) && time() - $lastUpdate['utime'] < 604800) { if ($this->echooutput) { echo "\n"; echo $this->c->info("Last update occurred less than 7 days ago, skipping full dat file update.\n\n"); } return; } if ($this->echooutput) { echo $this->c->header("Updating animetitles by grabbing full dat AniDB dump.\n\n"); } $zh = gzopen('http://anidb.net/api/anime-titles.dat.gz', 'r'); preg_match_all('/(\\d+)\\|\\d\\|.+\\|(.+)/', gzread($zh, '10000000'), $animetitles); if (!$animetitles) { return false; } $pdo->queryExec('DELETE FROM animetitles WHERE anidbid IS NOT NULL'); if ($this->echooutput) { echo $this->c->header("Total of " . count($animetitles[1]) . " titles to add\n\n"); } for ($loop = 0; $loop < count($animetitles[1]); $loop++) { $pdo->queryInsert(sprintf('INSERT IGNORE INTO animetitles (anidbid, title, unixtime) VALUES (%d, %s, %d)', $animetitles[1][$loop], $pdo->escapeString(html_entity_decode($animetitles[2][$loop], ENT_QUOTES, 'UTF-8')), time())); } if ($loop % 2500 == 0 && $this->echooutput) { echo $this->c->header("Completed Processing " . $loop . " titles.\n\n"); } gzclose($zh); if ($this->echooutput) { echo $this->c->header("Completed animetitles update.\n\n"); } }
function gzpassthru($fp) { while (!gzeof($fp)) { print gzred($fp, 1 << 20); } gzclose($fp); }
/** * Gzip a file * * @param string $sSourceFile Path to the source file * @param string $sDestinationFile [optional] Path to save the zip contents. * <p> * If NULL, the default value is $this->getDefaultDestinationFilename($sSourceFile) * </p> * * @return string Path to the saved zip file * * @throws FileOpenException if there is any error opening the source or output files * @throws FileReadException if there is an error reading the source file * @throws FileWriteException if there is an error writing the output file */ public function zip($sSourceFile, $sDestinationFile = null) { if ($sDestinationFile === null) { $sDestinationFile = $this->getDefaultDestinationFilename($sSourceFile); } if (!($fh = fopen($sSourceFile, 'rb'))) { throw new FileOpenException($sSourceFile); } if (!($zp = gzopen($sDestinationFile, 'wb9'))) { throw new FileOpenException($sDestinationFile); } while (!feof($fh)) { $data = fread($fh, static::READ_SIZE); if (false === $data) { throw new FileReadException($sSourceFile); } $sz = strlen($data); if ($sz !== gzwrite($zp, $data, $sz)) { throw new FileWriteException($sDestinationFile); } } gzclose($zp); fclose($fh); return $sDestinationFile; }
/** * Pimcore * * This source file is available under two different licenses: * - GNU General Public License version 3 (GPLv3) * - Pimcore Enterprise License (PEL) * Full copyright and license information is available in * LICENSE.md which is distributed with this source code. * * @copyright Copyright (c) 2009-2016 pimcore GmbH (http://www.pimcore.org) * @license http://www.pimcore.org/license GPLv3 and PEL */ function gzcompressfile($source, $level = null, $target = null) { // this is a very memory efficient way of gzipping files if ($target) { $dest = $target; } else { $dest = $source . '.gz'; } $mode = 'wb' . $level; $error = false; $fp_out = gzopen($dest, $mode); $fp_in = fopen($source, 'rb'); if ($fp_out && $fp_in) { while (!feof($fp_in)) { gzwrite($fp_out, fread($fp_in, 1024 * 512)); } fclose($fp_in); gzclose($fp_out); } else { $error = true; } if ($error) { return false; } else { return $dest; } }
function fclose($fp) { if ($this->has_gzip()) { return gzclose($fp); } return fclose($fp); }
private function _compress($file, $content, $gzip = true) { if ($gzip) { $fh = gzopen($file, 'wb'); if (!$fh) { throw new RuntimeException('Unable to open ' . $file . ' for writing.'); } gzwrite($fh, $content); gzclose($fh); $newFile = $file . '.gz'; if (rename($file, $newFile)) { self::$_tempFiles[] = $newFile; } else { throw new RuntimeException('Unable to rename ' . $file . ' to ' . $newFile . '.'); } } else { $newFile = $file . '.zip'; $zip = new ZipArchive(); $res = $zip->open($newFile, ZipArchive::CREATE); if ($res === true) { self::$_tempFiles[] = $newFile; $zip->addFromString(basename($file), $content); // In this case the original file isn't necessary unlink($file); $zip->close(); } else { throw new RuntimeException('Got error code ' . $res . ' when attempting to open ' . 'zip archive ' . $newFile . '.'); } } // Just to make sure our subsequent assertions aren't false positives $this->assertFalse(file_exists($file)); return $newFile; }
/** * {@inheritdoc} */ public function clearHandle() { if ($this->handle !== null) { gzclose($this->handle); $this->handle = null; } }
public function end() { $src = ob_get_clean(); $fp = gzopen($this->fragment, 'w9'); gzwrite($fp, $src, strlen($src)); gzclose($fp); echo $src; }
public function writeCompressedSample($filename, $content) { $fp = gzopen('test/samples/' . $filename, 'w9') or die("can't open: {$php_errormsg}"); if (-1 == gzwrite($fp, $content)) { die("can't write: {$php_errormsg}"); } gzclose($fp); }
public function close() { if ((! is_null($this->handle)) && ($this->handle !== false)) { gzclose($this->handle); } $this->__construct(); }
function process($tmp_filename) { $output_file = $tmp_filename . '.gz'; $file = gzopen($output_file, "wb"); gzwrite($file, file_get_contents($tmp_filename)); gzclose($file); unlink($tmp_filename); return $output_file; }
private function buildGZFile($xmlFile, $xml) { if (function_exists('gzopen') && function_exists('gzwrite') && function_exists('gzclose')) { $gz = gzopen($xmlFile . '.gz', 'w'); gzwrite($gz, $xml); gzclose($gz); } return; }
function fcloseWrapper($fp) { global $gzipEnabled; if ($gzipEnabled) { return gzclose($fp); } else { return fclose($fp); } }
function compress($file, $dest) { $fp = fopen($file, "r"); $data = fread($fp, filesize($file)); fclose($fp); $zp = gzopen($dest, "w9"); gzwrite($zp, $data); gzclose($zp); }