2010-09-27 122 views
3

我正在尝试读取大文件可以说在我的系统中使用cron作业的插图文件或photoshop文件。 文件大小从20 mb到300 MB不等使用php脚本从远程服务器读取大文件

我一直在使用一些功能,但它在阅读时中断。所以我想有一个新的意见。

金额这些功能

  • 的file_get_contents
  • ReadFile的
  • 卷曲

这是最有效的在

  • 一致性术语(在读取文件应该不会破裂)
  • 速度
  • 资源使用

如果有两个以上的cron作业,它影响对所有服务器的性能。

请分享最佳实践代码。

在此先感谢

+0

你是不是绑定到HTTP?这对于文件传输并不是那么有效,其他协议可能效率更高,甚至可能在故障时重新启动(尽管这也可以通过HTTP实现)。 – Wrikken 2010-09-27 17:11:04

回答

3

使用cURL。文件功能已被弃用,以支持cURL打开远程文件。这不仅是faster,而且更可靠的(你不太可能会遇到超时)。

如果脚本超时或内存不足,则需要增加执行时间和内存限制(max_execution_timememory_limit)。

其他说明:

  • readfile()读取文件并将其打印到输出缓冲器;它与file_get_contents()不一样。
  • 如果你用--with-curlwrappers编译卷曲,那么当你做file_get_contents()时,它将使用cURL而不是fopen()函数。

需要引用。

0

如果文件太大,您需要拆分两个任务。 首先你用wget下载文件,一旦你有你的文件,你用PHP来处理它。 这样你不太可能会遇到超时问题。

,如果你不知道哪个文件下载,因为它是从某种PHP变量,你可以写一个文件所需的文件作为工作的第一步名

然后将它传递给经由--input文件=文件作为第二步骤的wget

,然后处理它作为与您的php程序

0

DIRECTIO第三和最后的步骤是低电平延伸绕过OS和直进到硬盘,因此它可能是最有效的。

http://php.net/manual/en/ref.dio.php

注意,由于PHP 5.1.0它不再与PHP捆绑。另外,如果脚本在操作过程中中断,请检查max_execution_time和max_memory。

相关问题