Re: how to upload large file ( bigger than 1G) with PHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 12, 2010 at 4:41 AM, Ashley Sheridan
<ash@xxxxxxxxxxxxxxxxxxxx> wrote:

> I've noticed that large uploads over http seem to behave a little
> unpredictably at times, and aren't something I'd rely on. FTP is
> definitely the way to go, and there are plenty of Java applets that
> allow you to do this.

FTP is not a realistic option, for a multitude of reasons.

a) mapping an HTTP request and user -> FTP account / "pick this file up"
b) firewall issues
c) additional services having to be enabled and routed to on the server side

While I do agree FTP is FILE transfer protocol, it still isn't the
right solution IMHO. Ideally, HTML5 will provide a more industry
standard method (IIRC, a coworker already pointed out something in the
spec for it, but I forget)

A very workable solution we've came up with has been using Google Gears + PHP.

Re-using the browser and HTTP conversations provides us multiple benefits:
a) Cookie support - to identify the user
b) supports HTTP and HTTPS
c) Firewalls are not an issue - reuses the same proxy settings

The difference between standard file upload using a single POST vs.
our method is key - it's chunking the file. Google Gears has this
support, Java can too; send up portions of the file at a time, and
either glue it together on the fly on the server, or take all the
chunks and merge them all at once at the end. By doing it in a chunked
format, it allows us to also re-transmit failed chunks and treat files
of any size in "bite size chunks" - with a little bit of Javascript,
PHP and Gears, we can support files of any size (within filesystem and
OS limits) and it does not require -any- tweaking of the webserver. It
is chunks of data sent to the server using standard POSTs and small
enough to fit under even small PHP and webserver memory limits (and
could always be configurable) - no more suhosin.memory_limit,
memory_limit, post_max_size, upload_max_filesize to fuss with.

It's a shame that Google had to decide to stop developing and
maintaining Gears. It was a lightweight, perfect solution.

We're working on a Java-based version instead now. Lightest footprint
we can possibly get in Java, but it's the only applet language that
has all the support we need for chunking, cross-browser,
cross-platform, etc.

I believe our plan is to release it out to the public so people can
enhance it, use it, do whatever...

For now though, Gears works pretty awesome for us, a handful of our
users have complained though Gears won't install for them (not sure
why) and there is no support for Snow Leopard, I believe. So we're
starting to hit the point where it isn't our magical solution anymore.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux