3

我正在尝试在我的系统中使用 cron 作业读取大文件,比如说 illustrator 文件或 photoshop 文件。文件大小从 20 mb 到 300 mb 不等

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

金额这些功能

  • 文件获取内容
  • 读取文件
  • 卷曲

这是最有效的

  • 一致性(读取文件时不应中断)
  • 速度
  • 资源使用

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

请分享最佳实践代码。

提前致谢

4

3 回答 3

3

使用卷曲。文件函数已被弃用,取而代之的是 cURL 来打开远程文件。它不仅更快,而且更可靠1(您不太可能遇到超时)。

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

其他注意事项:

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

1需要引用。

于 2010-09-27T13:42:50.083 回答
0

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

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

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

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

于 2010-09-27T13:39:01.937 回答
0

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

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

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

于 2010-09-27T13:39:39.283 回答