gpt4 book ai didi

php - 显示 1x1 GIF(跟踪像素、网络信标)的最有效方式

转载 作者:IT王子 更新时间:2023-10-28 23:56:53 26 4
gpt4 key购买 nike

我正在构建一个基本的分析服务,理论上基于 Google Analytics 的工作原理,但我没有请求实际图像,而是将图像请求路由到接受数据然后输出图像的脚本。由于浏览器将在每次加载时请求此图像,因此每一毫秒都很重要。

我正在寻找文件从 PHP 脚本输出 gif 文件的最有效方式。到目前为止,我已经建立了 3 种主要方法。

有没有更有效的方法让我从 PHP 脚本中输出 1x1 GIF 文件?如果不是,哪一个是最有效和可扩展的?

三种确定的方法

PHP 图像构建库

$im = imagecreatetruecolor(1, 1);
imagefilledrectangle($im, 0, 0, 0, 0, 0xFb6b6F);
header('Content-Type: image/gif');
imagegif($im);
imagedestroy($im);

file_get_contents 从服务器获取图片并输出

$im = file_get_contents('raw.gif'); 
header('Content-Type: image/gif');
echo $im;

base64_decode 图片

header('Content-Type: image/gif');
echo base64_decode("R0lGODdhAQABAIAAAPxqbAAAACwAAAAAAQABAAACAkQBADs=");

(我的直觉是 base64 会是最快的,但我不知道该函数的资源密集程度如何;而且 file_get_contents 的扩展性可能不太好,因为它添加了另一个文件系统操作。)

作为引用,我使用的 GIF 在这里:http://i.stack.imgur.com/LQ1CR.gif

编辑

因此,我提供此图像的原因是我的分析库构建了一个查询字符串并将其附加到此图像请求。我没有解析日志,而是将请求路由到处理数据并以图像响应的 PHP 脚本,这样最终用户的浏览器就不会挂起或抛出错误。我的问题是,如何在脚本范围内最好地提供该图像?

最佳答案

也许

header('Content-Type: image/gif');
//equivalent to readfile('pixel.gif')
echo "\x47\x49\x46\x38\x37\x61\x1\x0\x1\x0\x80\x0\x0\xfc\x6a\x6c\x0\x0\x0\x2c\x0\x0\x0\x0\x1\x0\x1\x0\x0\x2\x2\x44\x1\x0\x3b";

这将输出与 1x1 透明 gif 的二进制文件内容相同的二进制字符串。我声称这是高效的,因为它不会执行任何慢速 IO(例如读取文件),也不会调用任何函数。

如果你想制作你自己的上述十六进制字符串的版本,也许这样你就可以改变颜色,你可以使用它来生成 echo 语句的 php 代码。

printf('echo "%s";', preg_replace_callback('/./s', function ($matches) {
return '\x' . dechex(ord($matches[0]));
}, file_get_contents('https://upload.wikimedia.org/wikipedia/en/d/d0/Clear.gif')));

关于php - 显示 1x1 GIF(跟踪像素、网络信标)的最有效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665960/

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