【问题标题】:How to delete a file from php://temp wrapper如何从 php://temp 包装器中删除文件
【发布时间】:2012-02-12 05:19:21
【问题描述】:

在 PHP 中,我使用内存中的(或者更确切地说,内存中的临时文件)将图像从外部 URL 加载到 GD 资源中:

$file = 'php://temp/img';
copy($uri, $file);
$src_img = @imagecreatefromjpeg($file);

但是,据我了解,此文件仍保留在内存中,尽管在 imagecreatefromjpeg() 之后我不再使用它。

有没有办法释放 php://temp 包装文件使用的内存?

或者至少表明该文件不再使用?

【问题讨论】:

  • 不确定这是否可能 - 我希望是这样,如果不是的话,这似乎很荒谬。但是,一个潜在的解决方法是使用php://maxmemory 设置一个非常低的内存值,这样数据将始终写入磁盘,从而保持较低的内存使用率。虽然如果你打算这样做,你不妨只使用一个临时文件,使整个php://temp 变得毫无意义。

标签: php file memory wrapper temp


【解决方案1】:

当您在 php://temp(或 php://memory 中)中创建文件时,资源只会持续脚本的生命周期。如果使用fopen()打开文件获取资源句柄,使用fclose($resource_handle)可以缩短生命周期。

在您的情况下,一旦您的脚本执行完毕,该文件将不再在内存中。

如果您想在脚本完成之前清除内存,您只需fclose()资源文件指针即可。

另一方面,您使用的/img 无效并被忽略。唯一可识别的添加数据是/maxmemory:n

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多