我想创建一个不属于php上传限制的上传脚本。 可能有一些情况需要上传2GB或更大的文件,我不希望将整个服务器的执行更改为32MB以上。用php直接写入磁盘
有没有办法直接从PHP写入磁盘?
您可能会建议某人使用什么方法来完成此操作?我已经阅读了堆栈溢出,但还没有完全找到我想要做的。
我想创建一个不属于php上传限制的上传脚本。 可能有一些情况需要上传2GB或更大的文件,我不希望将整个服务器的执行更改为32MB以上。用php直接写入磁盘
有没有办法直接从PHP写入磁盘?
您可能会建议某人使用什么方法来完成此操作?我已经阅读了堆栈溢出,但还没有完全找到我想要做的。
使用PHP上传大于PHP允许的限制的文件是不可能的,这很简单。
可能的解决方法包括using a client-side technology - like Java,不确定Flash和Javascript是否可以执行此操作 - 将原始文件“拆分”为较小的块。
简单的答案是你不能因为apache处理发布数据的方式。
如果你坚持要更大的文件上传,并仍然使用php作为后端,你可以使用php sockets API编写一个简单的文件上传接收器,并将其作为独立服务运行。一些好的细节可以在http://devzone.zend.com/article/1086#Heading8
你可以做一些有趣的事情基于PHP的套接字。你有没有考虑用Java编写一个applet将文件上传到监听的PHP守护进程?这可能不适用于大多数专业托管服务提供商,但如果您正在运行自己的服务器,则可以使其工作。请看下面的顺序:
不清晰的方式牛逼创建的文件做到这一点,但如果你在你的php.ini文件中禁用了PHP脚本超时,那么你可以做一些工作。
尽管这是一篇旧文章,但您在寻找解决方案来处理使用PHP进行大文件上传时,可以通过Google轻松找到它。 我仍然不确定是否可以上传增加内存限制的文件,但我认为这很有可能。在寻找解决这个问题的办法时,我发现了矛盾的来源。 PHP手册状态
post_max_size:设置允许的发布数据的最大大小。 此设置也会影响文件上传。 要上传大文件,此值必须 大于upload_max_filesize。如果 内存限制由您的 配置脚本启用,memory_limit也会 影响文件上载。一般来说 说,memory_limit应该是 大于post_max_size。 (http://php.net/manual/en/ini.core.php)
......这意味着您的内存限制应该比您要上传的文件大。然而,在php.net其他用户(拉格泰姆在爱丽丝DSL点com)指出:
我不相信神话“memory_size”应该是 上传的文件大小。这些文件是 绝对不会保存在内存中...... 取而代之上传1MB的块每个 存储在/ var/tmp下,之后在 下重建/ tmp,然后移动到 web /用户空间。
我运行Linux开箱即用的只有64MB RAM ,memory_limit的设置为16MB ,并在所有上传大小的文件约100MB 是没有问题的! (http://php.net/manual/en/features.file-upload.php)
他报告了垃圾收集器的一些其他相关问题,但也说明了如何解决它们。如果是这样,上传的文件大小可能会增加内存限制。 (但是,请注意,另一件事可能是处理上传的文件 - 那么你可能需要将它加载到内存中)
我正在写这个,之前我尝试使用PHP自己处理大文件上传,因为我正在评估使用php或python执行此任务。