在PHP中,我使用内存(或更确切地说,temp in-memory)文件将外部URL中的图像加载到GD资源中:
$file = 'php://temp/img';
copy($uri, $file);
$src_img = @imagecreatefromjpeg($file);
但是,据我所知,这个文件仍保留在内存中,即使我在imagecreatefromjpeg()
之后没有使用它。
有没有办法释放php://临时包装文件使用的内存?
或至少发出不再使用该文件的信号?
答案 0 :(得分:7)
在 php:// temp (或php://内存)中创建文件时,资源仅持续脚本的生命周期。如果使用fopen()
打开文件以获取资源句柄,则可以使用fclose($resource_handle)
缩短生命周期。
在您的情况下,只要您的脚本执行完毕,该文件就不再存在于内存中。
在您希望在脚本完成之前清除内存的情况下,您所要做的就是fclose()
资源文件指针。
另一方面,您使用的/img
无效且被忽略。唯一可识别的数据是/maxmemory:n
。