繁体   English   中英

使用PHP脚本从远程服务器读取大文件

[英]reading large file from remote server using php script

我试图读取大文件让我说插图文件或photoshop文件使用我的系统中的cron作业。 文件大小从20 mb到300 mb不等

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

金额这些功能

  • 的file_get_contents
  • ReadFile的
  • 卷曲

这是最有效的

  • 一致性(读取文件时不应该破坏)
  • 速度
  • 资源使用

如果有超过两个cron作业,它是否会影响所有服务器性能。

请分享最佳实践代码。

提前致谢

使用cURL。 不推荐使用文件函数,而是使用cURL来打开远程文件。 它不仅更快 ,而且更可靠1 (您不太可能遇到超时)。

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

其他说明:

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

需要引文1

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

如果您不知道要下载哪个文件,因为它是来自某种类型的php的变量,您可以将所需文件的名称写入文件作为您工作的第一步

然后通过--input-file = file将其传递给wget作为第二步

然后使用您的php程序将其作为第三步也是最后一步处理

DirectIO是一种低级扩展,绕过操作系统并直接进入硬盘,因此它可能是最有效的。

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

请注意,从PHP 5.1.0开始,它不再与PHP捆绑在一起。 此外,如果您的脚本在操作过程中出现故障,请检查max_execution_time和max_memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM