使用php脚本从远程服务器读取大文件
问题描述:
我正在尝试读取大文件可以说在我的系统中使用cron作业的插图文件或photoshop文件。 文件大小从20 mb到300 MB不等使用php脚本从远程服务器读取大文件
我一直在使用一些功能,但它在阅读时中断。所以我想有一个新的意见。
金额这些功能
- 的file_get_contents
- ReadFile的
- 卷曲
这是最有效的在
- 一致性术语(在读取文件应该不会破裂)
- 速度
- 资源使用
如果有两个以上的cron作业,它影响对所有服务器的性能。
请分享最佳实践代码。
在此先感谢
答
使用cURL。文件功能已被弃用,以支持cURL打开远程文件。这不仅是faster,而且更可靠的(你不太可能会遇到超时)。
如果脚本超时或内存不足,则需要增加执行时间和内存限制(max_execution_time
和memory_limit
)。
其他说明:
-
readfile()
读取文件并将其打印到输出缓冲器;它与file_get_contents()
不一样。 - 如果你用
--with-curlwrappers
编译卷曲,那么当你做file_get_contents()
时,它将使用cURL而不是fopen()
函数。
需要引用。
答
如果文件太大,您需要拆分两个任务。 首先你用wget下载文件,一旦你有你的文件,你用PHP来处理它。 这样你不太可能会遇到超时问题。
,如果你不知道哪个文件下载,因为它是从某种PHP变量,你可以写一个文件所需的文件作为工作的第一步名
然后将它传递给经由--input文件=文件作为第二步骤的wget
,然后处理它作为与您的php程序
答
DIRECTIO第三和最后的步骤是低电平延伸绕过OS和直进到硬盘,因此它可能是最有效的。
http://php.net/manual/en/ref.dio.php
注意,由于PHP 5.1.0它不再与PHP捆绑。另外,如果脚本在操作过程中中断,请检查max_execution_time和max_memory。
你是不是绑定到HTTP?这对于文件传输并不是那么有效,其他协议可能效率更高,甚至可能在故障时重新启动(尽管这也可以通过HTTP实现)。 – Wrikken 2010-09-27 17:11:04