本文整理匯總了PHP中FileCtl::getGzFileContents方法的典型用法代碼示例。如果您正苦於以下問題:PHP FileCtl::getGzFileContents方法的具體用法?PHP FileCtl::getGzFileContents怎麽用?PHP FileCtl::getGzFileContents使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類FileCtl
的用法示例。
在下文中一共展示了FileCtl::getGzFileContents方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: downloadDat2chKako
//.........這裏部分代碼省略.........
// HTTPヘッダレスポンスを取得する
$h = $this->freadHttpHeader($fp);
if ($h === false) {
fclose($fp);
$this->_pushInfoHtmlFreadHttpHeaderError($url);
$this->diedat = true;
return false;
}
// {{{ HTTPコードをチェック
$code = $h['code'];
// Partial Content
if ($code == "200") {
// OK。何もしない
// Not Modified
} elseif ($code == "304") {
fclose($fp);
//$this->isonline = true;
return "304 Not Modified";
// 予期しないHTTPコード。なかったと判斷
} else {
fclose($fp);
$this->downloadDat2chKakoNotFound($uri, $ext);
return false;
}
// }}}
if (isset($h['headers']['Last-Modified'])) {
$lastmodified = $h['headers']['Last-Modified'];
}
if (isset($h['headers']['Content-Length'])) {
if (preg_match("/^([0-9]+)/", $h['headers']['Content-Length'], $matches)) {
$onbytes = $h['headers']['Content-Length'];
}
}
$isGzip = false;
if (isset($h['headers']['Content-Encoding'])) {
if (preg_match("/^(x-)?gzip/", $h['headers']['Content-Encoding'], $matches)) {
$isGzip = true;
}
}
// bodyを読む
$body = '';
while (!feof($fp)) {
$body .= fread($fp, 8192);
}
fclose($fp);
$done_gunzip = false;
if ($isGzip) {
$gztempfile = $this->keydat . '.gz';
FileCtl::mkdirFor($gztempfile);
if (file_put_contents($gztempfile, $body, LOCK_EX) === false) {
die("Error: cannot write file. downloadDat2chKako()");
return false;
}
if (extension_loaded('zlib')) {
$body = FileCtl::getGzFileContents($gztempfile);
} else {
// 既に存在するなら一時バックアップ退避
$keydat_bak = $this->keydat . '.bak';
if (file_exists($this->keydat)) {
if (file_exists($keydat_bak)) {
unlink($keydat_bak);
}
rename($this->keydat, $keydat_bak);
}
$rcode = 1;
// 解凍
system("gzip -d {$gztempfile}", $rcode);
if ($rcode != 0) {
if (file_exists($keydat_bak)) {
if (file_exists($this->keydat)) {
unlink($this->keydat);
}
// 失敗ならバックアップ戻す
rename($keydat_bak, $this->keydat);
}
$this->pushDownloadDatErrorMsgHtml("<p>p2 info - 2ちゃんねる過去ログ倉庫からのスレッド取り込みは、PHPの<a href=\"http://www.php.net/manual/ja/ref.zlib.php\">zlib拡張モジュール</a>がないか、systemでgzipコマンドが使用可能\でなければできません。</p>");
// gztempファイルを捨てる
file_exists($gztempfile) and unlink($gztempfile);
$this->diedat = true;
return false;
} else {
if (file_exists($keydat_bak)) {
unlink($keydat_bak);
}
$done_gunzip = true;
}
}
// tempファイルを捨てる
file_exists($gztempfile) and unlink($gztempfile);
}
if (!$done_gunzip) {
FileCtl::make_datafile($this->keydat, $_conf['dat_perm']);
if (false === file_put_contents($this->keydat, $body, LOCK_EX)) {
die("Error: cannot write file. downloadDat2chKako()");
return false;
}
}
//$this->isonline = true;
return true;
}