detail
zip圧縮でメモリが足りないときメモ zip.lib.phpを利用して、サーバ上で複数ファイルをzip圧縮して保存するというようなことをしていたら、エラーがでてしまって悩んだりでしたので、また同じようなときに悩まないようにメモしておく。

$file_array = array('1.jpg', '2.jpg', '3.jpg', … '100.jpg');

$zipfile = new zipfile();

foreach ($file_array as $val) {
$handle = fopen($val, "rb");
$contents = fread($handle, filesize($val));
fclose($handle);
$zipfile -> addFile($contents, $val);
}

$zip_buffer = $zipfile->file();

$filename = 'images.zip';
$handle = fopen($filename, "wb");
fwrite($handle, $zip_buffer);
fclose($handle);
こんな感じで画像名が入っている$file_arrayから、ひとつずつ読み込んで変数にセットしていき、最後にファイルに書き出して終わりというものだったのだけど、ここでまさかのメモリ不足に。。。
そもそも一つ一つの画像のサイズが大きいのと、画像点数がやたらと多いので、それらをそのまま読み込んでいけばメモリが足りなくなるのは当然。しかもこのサーバで使えるメモリが少ないということもあったり。

で、どうしたものかな~と、zip.lib.phpを覗いてみましたらば、
var $doWrite = false;
ってなものがありまして。
通常はaddFile()ではファイルデータを配列に収納していくところが、この$doWriteがtrueだと、そのままechoでぶちまけてくれるのですよ。
それならば、ひとつずつ変数にセットするのではなく、これで直接ファイルに書き出していけばいいのでは?ということで修正したのが下記。
$file_array = array('1.jpg', '2.jpg', '3.jpg', … '100.jpg');

$zipfile = new zipfile();
// DoWriteモード
$zipfile->setDoWrite();

$filename = 'images.zip';

$fp = fopen($filename, 'wb');

foreach ($file_array as $val) {
$handle = fopen($val, "rb");
$contents = fread($handle, filesize($val));
fclose($handle);
// バッファリング開始
ob_start();
$zipfile -> addFile($contents, $val);
$output = ob_get_contents();
// バッファリング終了
ob_end_clean();
fwrite($fp, $output);
}
// バッファリング開始
ob_start();
$zipfile->file();
$output = ob_get_contents();
// バッファリング終了
ob_end_clean();
fwrite($fp, $output);

fclose($fp);
とりあえずこれでメモリ不足でダウンすることなくガリガリ書き出してくれます。
ただ、ファイル数が多いとどうしても時間はかかるので、タイムアウトしないようにしておく必要はあります。
Designed by Apple in California. そういえば今回のWWDCのオープニングはステキだった。
WWDC 2013所感:アップルがWWDC 2013で伝えた「本当に大事なこと」- ITmedia PC USER [link]
ここ最近の基調講演でも今回ほど大きな落胆要素がなく、向こう数年へのワクワク感が高まったことはなかったように思う。
それはこの「Designed by Apple in California.」が「Think different.」と同じようにAppleの強い意志を感じさせるものだったからじゃないかと。

さておき、このオープニングで流れた映像 [link] のバックで流れている曲が気になった。
後半はマイケル・ナイマンのRAFUTIかThe Exchangeぽいけどステキな曲だ。
カメタマゴ増殖中 狭いところが大好きなチカラさん。
一度入り込んだらなかなか出てこないのでした。

さておき、昨日の夕方にイシガメスペースの砂場でゴソゴソしているのがいたので、邪魔をしないように遠くから様子を伺っておりましたら、どうやら産卵して埋め戻して水場に戻っていきまして、すでにとっぷりと暮れておりましたが、懐中電灯片手に息子と発掘作業となりました。
» continue reading
WWDC 2013 結局起きてられなくて、朝ゆっくり観ました。 [link]
MacBook Airに期待してた人にはイマイチだったかもしれませんが、全体的には結構内容モリモリだったように思います。
そして、Mac OS X Mavericksも、iOS 7も今年後半にでてくること。すっかり変わったMac Proも年末にでてくることから、今年の年末から来年にかけてがAppleの製品の大きな変革となるようです。
特に今回Mac Proとセットであるべきの新しいThunderbolt Displayが発表されていないので、これが年末から年明けぐらいにRetina化されて登場し、同じパネルを使ったRetina化されたiMacもでてくるのでは。
また、それよりも先駆けてクリスマスまでにはiPad miniもRetina化されるでしょうし、それと前後して今回は地味にアップデートしたMacBook AirにRetinaモデルが追加されるのじゃないでしょうかね。
その後TB2を搭載したMac miniがでれば、Apple製品のオールRetina化が完成するというところでしょうか。
我家のホームサーバもMavericksになったらリニューアルしようかな~。
休日メモ 面白そうなのであとで見るメモメモ。。

えっ鳩ってゆうパックで送れるんだ...テルマエ・ロマエ作者のtweetが話題に - NAVER まとめ [link]

たった1枚に込められたクリエイティブすぎる17個の広告 [link]

ちょっ…これは凄い!!午後の紅茶のパッケージをよくよく見ると、恐ろしく手の込んだ秘密が隠されていた:らばQ [link]

「めしばな刑事タチバナ」扉絵の謎を追う! - Togetter [link]

【これはすごい】Googleアナリティクス連携 アクセス予測&曜日・時間別の平均値分析ツール(祝日自動判別) | Web担当者Forum [link]
おはしも産卵 今度はおはしが産みました!
» continue reading
顔出しパネル好き なぜ顔を入れるのか。
そこに顔出しパネルがあるからさ!
というぐらい顔出しパネル大好きな息子。
表情にもこだわりを見せる。
» continue reading
黒ひげ 庭で土を掘りまくったあとの髭面がかわいい。
ホタル 今年もまたシーズン到来ですよ。
カメタマゴ 今年もイシガメがタマゴを産みました!
去年土質が気になっていたので、今年は産卵場に砂を盛ってみました。
» continue reading
|<  < | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | >  >|