12月26日
swfuploadとclass.upload.phpとmemory_limit。
部屋とYシャツと私 – 第2弾。
「地球が静止する日」を観てきた。良くも悪くもアメリカ映画。映像は面白いけど、内容は食傷気味な。やはり今年のNo.1映画は「おくりびと」ですよ、皆さん。
で、はまったはまったハマだショーゴ。
swfuploadを使ってアップロード部分を担当させ、複数のサムネイル作成などプロセッシング部分をclass.upload.phpにお任せする、最近のマイブーム的な作り方。さらにこいつらの駆動をAjaxで制御。
ということで、デバッグがやりにくい やりにくい。
サイズの小さい画像はすんなりアップロードされて、通常・サムネイル・モバイル用の3種類の画像を作成してくれる。が、ある程度の大きさ以上になるとアップロードはされてるみたいだけど、プロセッシングの所で落ちてる。しかもログを見てもエラーが出てない。マジまいっちんぐ。
ということでシラミ潰しの旅へ。
swfuploadは恐らく悪くない。デバッグモードをオンにしてログを吐かせてみると、特に問題は無い模様。
ということはやはり問題はclass.upload.php。
前述の通り、Ajaxで呼び出してるし$_FILEを与えてるのはswfupload。しかも途中で勝手に落ちるから、class.upload.phpが記録しているログも取れない、ということでトラップを仕掛けて途中途中でログをファイルに書き込ませるローテクで追ってみました。
落ちてる部分は、process関数のimagecreatefromjpeg。
ご丁寧に「@imagecreatefromjpeg」となってる箇所で落ちてました。
で、解決策。
php.ini の memory_limit を増やせ。orz
約4300×2900ピクセルの画像では memory_limit = 64 MB では太刀打ち出来ず。128 MB まで増やせば何とか乗り切ってくれました。
しかし、レンサバになるとこの部分がイジれる訳もなく。ということで根本的な解決策としてはアップロード画像を総ピクセル数で制限掛ける、という事か。
でもswfuploadにはファイルサイズ制限しかないので、file_size_limit に適当な値をセットしてお茶を濁すか、class.upload.phpでピクセルサイズ制限掛けるか。後者の場合、一旦アップロード完了を待たないと駄目なので、ユーザビリティや回線的にはNGな方向で。
サーバー環境やシステムの内容に応じて、値は調整してください。
で、Tips。
Flash Player10に対応したSWFUpload ver.2.2.0ですが、ダイアログ呼び出し部をマウスオーバーでハンドカーソルに変えたい場合、
button_cursor : SWFUpload.CURSOR.HAND
だそうですよ。
今年のマイベストはマジックアワーですねぇ。
地球が静止・・・は見ようか迷ってたけどやめときますw
掲載日: 2008年12月27日 10:05 PM by ないと☆どらいぶ
マジックアワーね~
深津絵里と綾瀬はるかが可愛かったなぁ、位ですw
まぁそれで充分満足してるのですが。。。
掲載日: 2008年12月27日 10:51 PM by 板