gpt4 book ai didi

php - PHP copy()如何处理内存

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:47 26 4
gpt4 key购买 nike

我需要使用 PHP 的 copy() 函数将文件从一个位置复制到另一个位置。我有意不使用 rename()

文件大小为 500MB 到 1GB。似乎在我启动 PHP 脚本后移动它们大约需要 10-20 秒(每次执行处理一个文件)。

由于 max_execution_timepost_max_sizeupload_max_filesizememory_limit 值,我的服务器拒绝上传这些文件,所有这些都设置得高得离谱,但服务器会在我尝试上传时超时。

现在我担心如果在站点处理大量流量时运行此 copy() 操作,服务器将会失败。

所以我的问题是,PHP 的 copy() 的运行方式是否会使服务器的内存和/或执行时间限制过载?

我知道 PHP 脚本需要很长时间才能完成,但我希望这段时间本质上只是一段低内存“等待时间”,因为 PHP 坐下来让服务器操作系统移动文件。 .. 我不认为 PHP 需要将文件加载到缓冲区或类似的东西中才能复制它,但是这个级别的内存讨论是一个有点超出我理解的话题。

谁能解释一下 PHP copy() 如何使用内存,以及内存过载是否存在任何风险?

最佳答案

查看the source对于复制it works ultimately通过读写 8KB size 的 block -- 所以它最终不会分配大量服务器内存。正如人们已经评论过的那样,这当然是人们期望发生的事情。

但是,并行运行的大文件的多个副本很容易破坏存储介质的性能(特别是如果它是由旋转的铁锈制成的),这反过来又会导致副本花费大量时间来完成。这很容易证明比脚本的最大执行时间限制要长,因此最好在开始复制之前删除该限制。

关于php - PHP copy()如何处理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18497793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com