gpt4 book ai didi

PHP - 使用 fpassthru 通过 imagePNG 将图像发送到移动设备

转载 作者:行者123 更新时间:2023-11-30 04:06:17 26 4
gpt4 key购买 nike

我有一个 php 脚本,用于根据请求将图像发送到移动设备。在当前版本中,脚本运行并且在结束之前我使用 imagePNG() 将图像输出到设备但是在阅读 php 在线手册中的示例时我看到了这个示例:

<?php
header("Content-Type: image/png");

# Generate cachefile for image, if it doesn't exist
if( !file_exists($cachefile) ) {
$im = generateimage(); # some code generates an image resource
imagepng($im, $cachefile); # store the image to cachefile

# don't output it like this:
/* imagepng($im);*/

imagedestroy($im);
}

$fp = fopen($cachefile, 'rb'); # stream the image directly from the cachefile
fpassthru($fp);
exit;
?>

我使用这个示例进行了一些修改,将我的图像发送到移动设备,它工作正常,但我有一些问题想问:1) 这比从文件创建图像并使用 imagePNG 发送更有效吗?

2) 另外我不应该在使用 fpassthru 后立即关闭文件吗?

3) 如果我确实使用了 fopen,这是否意味着该文件已被锁定,意味着没有其他设备可以在流式传输的那一刻访问它?

如有任何意见,我们将不胜感激。

最佳答案

我认为如果您的站点很忙,缓存生成的图像是个好主意。它肯定会节省内存和 CPU 周期,以换取一些硬盘空间。

关于在使用 fpassthru 后关闭文件,这是不必要的,因为 PHP 会在脚本终止时关闭文件。由于下一行调用了 exit,因此无需显式关闭文件。如果在输出图像后还有更多操作,我建议在不再使用时关闭文件。

至于你的第三个问题,因为你没有调用flock ,文件未锁定。如果一个进程打开它进行读取,则另一个进程可以同时打开它进行读取。

最后一点,您可以使用函数 readfile输出文件。这使您不必调用 fopen,但在内部,readfilefpassthru 调用相同的 PHP 函数 php_stream_passthru 因此根据您使用的是哪个,在时间或效率上几乎没有差异。

关于PHP - 使用 fpassthru 通过 imagePNG 将图像发送到移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11604202/

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