先日マクロス劇場版がテレビでやってたんです。だからiPodで見ようとおもって録画したんです。うちの録画システムでは録画すると勝手にiPod用に変換されるのですが、iPodに転送してみると先頭から数分で終わっちゃうんです。
はて?
ファイルコピーのところがなんか怪しかったので動作検証してみました。
[filecopy.php]#!/usr/local/bin/php <?php copy ('zero.dat','zero2.dat'); ?>[コマンドラインから実行]
% dd if=/dev/zero of=zero.dat bs=64k count=65537 ←4GB+1カウント 65537+0 records in 65537+0 records out 4295032832 bytes transferred in 109.319008 secs (39288985 bytes/sec) % php filecopy.php % ls -l -rw-r--r-- 1 takatani wheel 63 Dec 30 18:14 filecopy.php -rw-r--r-- 1 takatani wheel 4295032832 Dec 30 18:20 zero.dat -rw-r--r-- 1 takatani wheel 65536 Dec 30 18:21 zero2.dat
このPHPプログラムは一瞬で終了して、実行結果は65536バイトしかコピーされません(笑)。FreeBSDではファイルシステムからして4GBなんてとこに制限があるとは思いませんでしたが、PHPでは気をつけないといけないんですね。いままでそんなに長い番組を録画したことがなかったのでぜんぜん気づきませんでしたよ。
# 結局 /bin/cp を呼び出すことで対処しました