我正在尝试在我的系统中使用 cron 作业读取大文件,比如说 illustrator 文件或 photoshop 文件。文件大小从 20 mb 到 300 mb 不等
我一直在使用一些功能,但它在阅读时中断了。所以我想有一个新的意见。
金额这些功能
- 文件获取内容
- 读取文件
- 卷曲
这是最有效的
- 一致性(读取文件时不应中断)
- 速度
- 资源使用
如果有两个以上的 cron 作业,它是否会影响所有服务器性能。
请分享最佳实践代码。
提前致谢
我正在尝试在我的系统中使用 cron 作业读取大文件,比如说 illustrator 文件或 photoshop 文件。文件大小从 20 mb 到 300 mb 不等
我一直在使用一些功能,但它在阅读时中断了。所以我想有一个新的意见。
金额这些功能
这是最有效的
如果有两个以上的 cron 作业,它是否会影响所有服务器性能。
请分享最佳实践代码。
提前致谢
使用卷曲。文件函数已被弃用,取而代之的是 cURL 来打开远程文件。它不仅更快,而且更可靠1(您不太可能遇到超时)。
如果您的脚本超时或内存不足,您将需要增加执行时间和内存限制(max_execution_time
和memory_limit
)。
其他注意事项:
readfile()
读取文件并将其打印到输出缓冲区;它与file_get_contents()
.--with-curlwrappers
那么当你这样做时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。